I copied your script and got the opposite of what you said you got:
O'gorman -> O'Gorman
Mcrostie -> McRostie
mcrostie -> Mcrostie (which makes sense, since only the Proper applies to it).
So, I think it's working correctly, maybe in your script (before you typed it above) you have a typo?
By the way, why the three Substitute statements rather than just
["MC"; "Mc "];
["Mc"; "Mc "];
["O'"; "O' "])