GPS, negative timezone, and date bugfix

For negative timezone offsets, for a few hours each month, the date
was reported as the 0th of the next month when it was actually the
last day of the current month.

This bug only shows up for a few hours each month, which is why I only
noticed it today.  And this bug only shows up if the GPS timekeeping
is enabled with a negative timezone offset.

This commit fixes that bug.