Sorry, I don't think I was clear enough about the problem. The problem is that if you use FirstDay(SATURDAY) as an example, the current behavior does move the weekdays (Sa Su Mo Tu We Th Fr), but it does not shift the dates too, so you could have day 3 of the month be on a Wednesday when it's actually a Friday, etc.
Adding that small piece of code will shift the dates over so they line back up with their respective day names when you call FirstDay.