diff -Nurb libical-0.44.orig/src/libical/icaltimezone.c libical-0.44/src/libical/icaltimezone.c --- libical-0.44.orig/src/libical/icaltimezone.c 2013-01-31 10:26:29.000000000 +0100 +++ libical-0.44/src/libical/icaltimezone.c 2013-01-31 10:25:22.000000000 +0100 @@ -883,9 +883,12 @@ change_num += step; /* If we go past the start of the changes array, then we have no data - for this time so we return a UTC offset of 0. */ - if (change_num < 0) - return 0; + for this time so we return the prev UTC offset. */ + if (change_num < 0) { + if (is_daylight) + *is_daylight = ! tmp_change.is_daylight; + return tmp_change.prev_utc_offset; + } if ((unsigned int)change_num >= zone->changes->num_elements) break;