Следующая строка
$start_date = mktime(0, 0, 0, date("m", $start_date), date("d", $start_date), date("Y", $start_date)+$i);
Должно быть
$start_date = mktime(0, 0, 0, date("m", $start_date), date("d", $start_date), date("Y", $start_date)+1);
В противном случае год даты увеличивается на 1, затем на 2, а затем на 3 на 4, так как дата началаизменяется каждый раз.