add_month returns the date d plus n months.
The argument n can be any integer. If d is the last day of
the month or if the resulting month has fewer days than the day
component of d, then the result is the last day of the resulting
month. Otherwise, the result has the same day component as d.