TimeSpanRule::Next(DateTime) + simple refactor