Hmmm.. I keep getting the same odd behavior.
Instead of setting the appointment to be non-visible, it will set all occurrences prior to the date of the exception I'm trying to add to non-visible, and then will append that number of occurrences to the front of the occurrences.
So, for example, say I have an appointment on 1/20/2013 that recurs every day for five occurrences (1/20/2013 - 1/24/2013 inclusive). If I try to add an exception for 1/22/2013, the appointments for 1/20/2013 and 1/21/2013 will disappear, and two new appointments will appear for 1/25/2013 and 1/26/2013.
I assume somehow the MasterEvent is being set to the date of the exception I'm trying to add, but I do nothing of the sort in my code...
I pass in a datetime (dt) and an appointment (appt) and then use that datetime to find the specific occurrence in the appointment that the user is referring to:
IEvent ev = null;
foreach (IEvent e in appt.Occurrences)
if (((Appointment)e).Start.Date == dt.Date)
ev = e;
ev.Visible = false;