diff --git a/SOPE/NGCards/iCalDailyRecurrenceCalculator.m b/SOPE/NGCards/iCalDailyRecurrenceCalculator.m index 8ffa4e10a..b90af51a7 100644 --- a/SOPE/NGCards/iCalDailyRecurrenceCalculator.m +++ b/SOPE/NGCards/iCalDailyRecurrenceCalculator.m @@ -138,7 +138,7 @@ lastInstanceStartDate = [firStart dateByAddingYears: 0 months: 0 days: ([rrule repeatInterval] - * [rrule repeatCount])]; + * ([rrule repeatCount] - 1))]; } else lastInstanceStartDate = [super lastInstanceStartDate]; diff --git a/SOPE/NGCards/iCalMonthlyRecurrenceCalculator.m b/SOPE/NGCards/iCalMonthlyRecurrenceCalculator.m index 4949e712f..e704ea50d 100644 --- a/SOPE/NGCards/iCalMonthlyRecurrenceCalculator.m +++ b/SOPE/NGCards/iCalMonthlyRecurrenceCalculator.m @@ -494,7 +494,7 @@ static void NGMonthDaySet_fillWithByDayX (NGMonthDaySet *daySet, lastInstanceStartDate = [firStart dateByAddingYears: 0 months: ([rrule repeatInterval] - * [rrule repeatCount]) + * ([rrule repeatCount] - 1)) days: 0]; } else diff --git a/SOPE/NGCards/iCalWeeklyRecurrenceCalculator.m b/SOPE/NGCards/iCalWeeklyRecurrenceCalculator.m index 5de713d8d..a3e6005fa 100644 --- a/SOPE/NGCards/iCalWeeklyRecurrenceCalculator.m +++ b/SOPE/NGCards/iCalWeeklyRecurrenceCalculator.m @@ -195,7 +195,7 @@ lastInstanceStartDate = [firStart dateByAddingYears: 0 months: 0 days: (7 * [rrule repeatInterval] - * [rrule repeatCount])]; + * ([rrule repeatCount] - 1))]; } else lastInstanceStartDate = [super lastInstanceStartDate]; diff --git a/SOPE/NGCards/iCalYearlyRecurrenceCalculator.m b/SOPE/NGCards/iCalYearlyRecurrenceCalculator.m index d7c34d2ad..9f27a9b95 100644 --- a/SOPE/NGCards/iCalYearlyRecurrenceCalculator.m +++ b/SOPE/NGCards/iCalYearlyRecurrenceCalculator.m @@ -98,7 +98,7 @@ lastInstanceStartDate = [firStart dateByAddingYears: ([rrule repeatInterval] - * [rrule repeatCount]) + * ([rrule repeatCount] - 1)) months: 0 days: 0]; } diff --git a/SoObjects/Appointments/iCalEvent+SOGo.m b/SoObjects/Appointments/iCalEvent+SOGo.m index 68bcf1fce..7e2e938a3 100644 --- a/SoObjects/Appointments/iCalEvent+SOGo.m +++ b/SoObjects/Appointments/iCalEvent+SOGo.m @@ -40,15 +40,18 @@ - (BOOL) isStillRelevant { - NSCalendarDate *now; + NSCalendarDate *now, *lastRecurrence; BOOL isStillRelevent; now = [NSCalendarDate calendarDate]; if ([self isRecurrent]) - isStillRelevent = ([[self lastPossibleRecurrenceStartDate] earlierDate: now] == now); + { + lastRecurrence = [self lastPossibleRecurrenceStartDate]; + isStillRelevent = (lastRecurrence == nil || [lastRecurrence earlierDate: now] == now); + } else - isStillRelevent = ([[self endDate] earlierDate: now] == now); + isStillRelevent = ([[self endDate] earlierDate: now] == now); return isStillRelevent; }