I wanted to add that after writing this post, I did much more reading and I think from some other answers I can see a way to do this. So when an occurrence has passed, I can actually just turn that into its own Appointment and give it a color. I would want to lock it as well so it cannot be deleted. It becomes historical. I think that would work fine. I was thinking of adding an exception to the rule, but that could get pretty big. So I was thinking of doing something like this and see what you think:
1) Once an occurrence of an appointment has pasted, I would create a new Appointment for that occurrence and give it a category.
2) I would then also change the recurrencepattern dynamically so the appointment always starts from the moment the last occurrence finished, so that there is never an occurrences in the past. They are all now separate instances.
I do see a problem. If I am setting maximum occurrences, that would no longer work unless I dynamically update that as well.
Is it easy enough update the recurrencepattern and have it update automatically or would I have to refresh? Or do you have a better suggested way of doing what I am talking about?