---
Edit .... Sorry .... misread the question, so this reply while somewhat relavant, does not really fit! 
----
The issue that may be occurring is that DateDiff() will only work in the interval you specify, so ...
DateDiff("m", #1/31/2012 11:59:59 PM#, #2/1/2012 12:00 AM#)
will return a value of 1 month, even though the two dates differ by 1 second. This makes since if you truncate both dates to a granularity of a month. By doing that you can see that DateDiff() is giving the difference between #1/2012# and #2/2012#, which is indeed one.
To prevent this effect and to have your expression return the whole number of months elasped, you have to do something like this:
DateDiff("m", yourDate, Date()) + (DateAdd("m",DateDiff("m", yourDate, Date()),yourDate) > Date())
What the expression does is verify that the value of months returned from the DateDiff(), once added to your base date EXCEEDS the base date. So ...
So ....
DateDiff("m", yourDate, Date()) + (DateAdd("m",DateDiff("m", yourDate, Date()),yourDate) > Date())
DateDiff("m", #1/31/2012#, #2/1/2012#) = 1
DateAdd("m",DateDiff("m", #1/31/2012#, #2/1/2012#),#1/31/2012#) = #2/29/2012#
Now substituting, and keeping in mind that a logical expression has a value of -1 for True and 0 for False ...
1 + (#2/29/2012# > #2/1/2012#)
1 + (-1) = 0
So 0 elapsed months has passed between #1/13/2012# and #2/1/2012#
But now use 1/1/2012 for yourDate and 2/1/2012 for Date() and the result will be 1.