Well I think Bill has got it wrong. Midnight is 12pm which follows 11pm which follows 10pm etc. One second past midnight and it becomes am. Similarly with midday at 12am.
It seems that Bill has got it wrong, how unusual!! Here is the definitive from the GMT web site
"AM and PM
What is Noon and Midnight?
AM and PM start immediately after Midnight and Noon (Midday) respectively.
This means that 00:00 AM or 00:00 PM (or 12:00 AM and 12:00 PM) have no meaning.
Every day starts precisely at midnight and AM starts immediately after that point in time e.g. 00:00:01 AM (see also leap seconds)
To avoid confusion timetables, when scheduling around midnight, prefer to use either 23:59 or 00:01 to avoid confusion as to which day is being referred to.
It is after Noon that PM starts e.g. 00:00:01 PM (12:00:01)"