public function addStrictMonths($months)
    {
        $months = (int) $months;

        $years = (int) ($months / 12);
        $months = $months % 12;

        $year = $this->getYear() + $years;
        $month = $this->getMonth() + $months;

        if ($month < 1) {
            $year -= 1;
            $month += 12;
        } elseif ($month > 12) {
            $year += 1;
            $month -= 12;
        }

        $success = $this->setDate($year, $month, $this->getDay());

        if (!$success) {
            throw new Exception(
                sprintf(
                    'Can not add %d whole months to %s.',
                    $months,
                    $this->format('c')
                )
            );
        }

        return $this;
    }