diff --git a/SOPE/NGCards/iCalTimeZonePeriod.m b/SOPE/NGCards/iCalTimeZonePeriod.m
index a7e2187..074f879 100644
--- a/SOPE/NGCards/iCalTimeZonePeriod.m
+++ b/SOPE/NGCards/iCalTimeZonePeriod.m
@@ -189,8 +189,13 @@
   rrule = (iCalRecurrenceRule *) [self uniqueChildWithTag: @"rrule"];
 
   if ([rrule isVoid])
-    tmpDate
-      = [(iCalDateTime *) [self uniqueChildWithTag: @"dtstart"] dateTime];
+    {
+      /* This function used to call [iCalDateTime dateTime] but that may
+         cause infinite loops. */
+      NSString *date = [[[self uniqueChildWithTag: @"dtstart"] valuesAtIndex: 0 forKey: @""] lastObject];
+      if (date)
+        tmpDate = [date asCalendarDate];
+    }
   else if ([rrule untilDate] == nil || [refDate compare: [rrule untilDate]] == NSOrderedAscending)
     tmpDate = [self _occurrenceForDate: refDate byRRule: rrule];
 
