Do you have access to the VB code (I am not familiar enough with VB to know if that is a standard function)? If so, it may be worth looking at that code to try to replicate.
In the example you posted, the function added 29 days to the date. I bet if you put July 31 as the date, you would have gotten Aug 31 out, which would have added 31 days to the date. So the function is more complicated that just adding a fixed number of secs to a value. The problem probably lies in the fact the the VB function takes into account the varying days in each month. The program probably assumed February of 2000 had 29 days (2000 was not actually a leap year - the function gave an invalid date). It then adjusted the value of a month accordingly.
So your best bet is gets your hands on source if available to mimmick the behavior. It may be as simple as adding a 31 day month, then back tracking to the last date of the month if you roll over. What does an input date of Jan 27, 2000 give you? If it gives you Feb 27, then this is exactly what they are doing, because you would have moved back 4 days on your input and only gotten a change of 2 days on your output. In that case, Jan 28 - Jan 31 would have the same result on non-leap years.
You may need to use Seconds to Date/Time and Date/Time to Seconds on the Time Pallete to do your math, but the functions don't handle rollover (32 days, 13 months).