cardsmoney, я же тебе не случайно дал ссылку на мануал.
В этой строчке diff уменьшается на нужную величину ( для года например ), чтобы в следующей итерации высчитать кол-во месяцев.
Попробуй чтоли блок-схему этого алгоритма нарисовать, может поймешь как это все работает.
Но тут уже даже не хочется объяснять почему не стоит пользоваться данным кодом.
Почему не стоит использовать? Или про эту магическую строчку?
Если про строчку - то разберись как этот алгоритм вообще работает.
А по-первому, если рассматривать интервалы меньше месяца, то он еще и подойдет, а если больше, то нет. Т.к. в месяце не всегда 31 день, а в году не всегда 365, а скрипт заточен под это.