@mr_noodle: I think you'll find is that it's a bug in Tiger. On Tiger, you'll find when it gets at the end of the month, it will report a range back of, say, { 28, 7 }, which suggests that the day can take the values, 28, 29, 30, 31, 32, 33, 34, which is clearly wrong.

@tom: The code above only produces a result of 1-7 if the first day happens to be the first day of the month. The reason the length differs is for the reason I outlined earlier: because the day wraps when a week straddles a month boundary. If you look at the week at the end of this month, you'll find you get {1, 29} back.