System.Globalization.Calendar.GetWeekOfYear () devuelve resultados impares

Estoy en el medio de calcular los números de semana para fechas, pero elSystem.Globalization.Calendar devuelve resultados impares para (entre otros años) el 31 de diciembre del año 2007 y 2012.

Calendar calendar = CultureInfo.InvariantCulture.Calendar;
var date = new DateTime(2007, 12, 29);
for (int i = 0; i < 5; i++)
{
    int w = calendar.GetWeekOfYear(date, CalendarWeekRule.FirstFourDayWeek, DayOfWeek.Monday);
    Console.WriteLine("{0}\t{1}", date.ToString("dd.MM.yyyy"), w);
    date = date.AddDays(1);
}

Resultados

29.12.2007      52
30.12.2007      52
31.12.2007      53 <--
01.01.2008       1
02.01.2008       1

29.12.2012      52
30.12.2012      52
31.12.2012      53 <--
01.01.2013       1
02.01.2013       1

egún tengo entendido, no debería haber una semana 53 en el año 2007 y 2012, pero los días deberían incluirse en la semana 1. ¿Hay alguna manera de cambiar este comportamiento en elCalendar?

Respuestas a la pregunta(6)

Su respuesta a la pregunta