Thanks for report

I Have Tryed with your sample: But my result is correct: Just one month added
DTOS( F_RM_Push_Date( STOD( '20120131' ), 0, 1, 0 ) )
RESULT := '20120229'
DTOS( F_RM_Push_Date( STOD( '20121231' ), 0, 1, 0 ) )
RESULT := '20130131'
...
I have maked some changes in the function to be safe from locale date settings

May solve this error (new code edited in my last message : before this post)...
Best regards...