Этот код какой-то эстет писал.
Для получения количества полных дней вместо битовых выкрутасов надо просто использовать floor()
Хотя в данном случае надо использовать ceil, ну или round. Потому что эти 5 сотых дня происходят явно от прехода на летнее время. И с конверсией в int теряется 1 день.