According to the official (gregorian) calendar, the week number for 29/12/2008 is 1, because after the last day of week 52 (i.e. 28/12) there are three or less days left in
Week numbers differ from country to country and should depend on your locale/regional settings if I'm not entirely wrong.
Edit: Wikipedia supports my vague recollection that these numbers differ based on country: http://en.wikipedia.org/wiki/Week_number#Week_number
I would expect a respectable framework to obey the COUNTRY selected in your local runtime.
As a work around, you could say the week number is WeekNumber mod 52. I believe this would work for the cases you describe.
In my experience, the demonstrated behavior is the typical behavior, referring to the partial final week as week 53. This may be because all significant exposure I've had to week numbers has been related to accounting the end of the calendar year for reporting purposes, and the IRS (or tax agency of your choice) considers the calendar year to end on 31 December, not the last full week of the year.
This article looks deeper into the issue and possible workarounds. The hub of the matter is that the .NET calendar implementation does not seem to faithfully implement the ISO standard
As a workaround, why not use FirstFourDayWeek
but add:
if ( weekNumber > 52 )
weekNumber = 1;
I know this is an old post, but any way noda time seems to get the correct result..