I've encountered a bug in DT::Infinite math. It seems that adding a number of days to DT::Infinite::Future results in a DT::I::Future object again, but adding a number of years changes it.
For example: my $dt = DateTime->now; my $dt_inf = DateTime::Infinite::Future->new; print $dt_inf>$dt ? 'OK' : 'NOK', ' ', $dt_inf->year; $dt_inf->add( days => 20 ); print $dt_inf>$dt ? 'OK' : 'NOK', ' ', $dt_inf->year; $dt_inf->add( years => 20 ); print $dt_inf>$dt ? 'OK' : 'NOK', ' ', $dt_inf->year; Output: OK inf OK inf NOK -793 I presume that this is because the code for adding days is much simpler than the code for adding months. I don't know how best to fix this; perhaps a separate DT::Infinite::add_duration method? Eugene