MATLAB: How to substract months with EOM respect

"date" "month" "substract"

Hi, I would like to know if there is solution to substract months with respect of the End of Month flag. I've tried addtodate() and addMonth() functions but it's not giving me the wanted results.
Here is an exemple : If today's date is 31/01/14 and if I substract 2 months, I'd like as a result the 30/11/2013 and not the 01/12/2013. In the meantime,I like that if today's date is 28/02/2014 and if I substract 2 months, I'd like as a result the 28/12/2013 and not the 31/12/2013 (as addMonth function do).
Many thanks in advance, Regards, Paul

Best Answer

This should works. Logic isn't it ? :-)
function UnadjDate = AddMonthUnadj(date,nbMonth)
Mdate = x2mdate(date); [Y,M,D] = datevec(Mdate);
MatlabDate = addMonth(Mdate,nbMonth,0);
MatlabDateEOM = addMonth(Mdate,nbMonth,1);
if eomdate(Mdate) == Mdate & D ~= [28;29;30]
UnadjDate = m2xdate(MatlabDateEOM);
else
UnadjDate = m2xdate(MatlabDate);
end