private function monthsUntil(LocalDate $end) { $packed1 = $this->getProlepticMonth() * 32 + $this->getDayOfMonth(); // no overflow $packed2 = $end->getProlepticMonth() * 32 + $end->getDayOfMonth(); // no overflow return Math::div($packed2 - $packed1, 32); }