All-day events live at UTC midnights with an exclusive end, but coversDay
sliced each day in the device timezone. East of UTC the exclusive end
landed a few hours into the next local day, so a one-day all-day event
(e.g. a birthday) rendered on two days in the day/week/month views — while
the detail and edit screens, which work in UTC, showed it correctly.
Compare all-day coverage in UTC and step the exclusive end back to the
last covered day, mirroring the detail/edit views.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>