When passing in a negative duration, all atoms correctly calculate their factor except for the Months class. For instance, if -P3M is the duration with a base date of 2012-1-1, the months is incorrectly calculated as -2 which causes an argument out of range exception from Time#utc.
Also, for positive durations, if the base month plus atom is evenly divisible by 12 but greater than 12, this resulted in a month calculation of 0 which also caused an argument out of range exception. For instance, if P19M is the duration with a base date of 2012-5-1, the months is incorrectly calculated as 0.
When passing in a negative duration, all atoms correctly calculate their factor except for the Months class. For instance, if -P3M is the duration with a base date of 2012-1-1, the months is incorrectly calculated as -2 which causes an argument out of range exception from Time#utc.
Also, for positive durations, if the base month plus atom is evenly divisible by 12 but greater than 12, this resulted in a month calculation of 0 which also caused an argument out of range exception. For instance, if P19M is the duration with a base date of 2012-5-1, the months is incorrectly calculated as 0.