I have been woken up out of a deep sleep far too many times by alarms that go off before midnight due to this blooper.
One of the options on iCal on Mac OS X is to specify that you want to 'Add a default alarm to all new events and invitations'. This is shown at the bottom of the preferences dialog below:
This can be extremely useful. For years when I owned a Palm OS device I would have new events default to sounding an alarm 15 minutes in advance. That way, I wouldn't forget an event because I was in too much of a hurry when entering it. Entering events is also faster this way.
Unfortunately this default applies to 'all-day' events, and iOS devices dutifully obey this command and hence sound a alarm just before midnight. When adding an all-day event in iCal you have to remember to turn off the default alarm. The following is the screen where you have to do this:
It is all too easy to forget about the alarm that is being automatically set. The same applies when converting a regular event to an all-day event, or loading events from other calendar programs.
This could be a safety issue: Features that can contribute to people being tired the next day could cause significant harm.
Here are the required changes: Firstly, iCal preferences should include another box below 'add a default ...' that allows you to indicate 'except for all day events'. In addition, iOS should have an option 'Do not sound alarms just prior to midnight for all-day events the next day'. This would allow alarms for certain numbers of hours prior to midnight to sound, but not alarms for these events specified in terms of minutes before midnight.
After I converted to iOS I was awakened many times, since my previous Palm Treo behaved the way I wanted in this regard. I had to go through all my recurring all-day events, which included birthdays, holidays, annual maintenance reminders etc. to get rid of these pesky pre-midnight wakeups. I expect thousands of other people have been inflicted with the same problem. And now, there is no way I dare use the default alarm option, which is a shame.