RRULE COUNT or UNTIL: end a recurring schedule without an extra session
“Four generated Mondays” and “four sessions after a skipped holiday” are different schedules. COUNT bounds the recurrence rule; an exclusion can still remove one of those occurrences. Work out the final dates before changing a course or rota.
Worked weekly course starting 2 November 2026 at 09:00Z
| Rule and exception | Final November starts | Number of sessions |
|---|---|---|
| COUNT=4, no exception | 2, 9, 16, 23 | 4 |
| UNTIL=20261123T090000Z | 2, 9, 16, 23 | 4 |
| COUNT=4; EXDATE for 9 November | 2, 16, 23 | 3 |
| COUNT=5; EXDATE for 9 November | 2, 16, 23, 30 | 4 |
Choose the boundary that matches the real agreement
RFC 5545 section 3.3.10 defines COUNT as an occurrence limit and UNTIL as an inclusive date or date-time boundary. DTSTART counts as the first occurrence. COUNT and UNTIL must not both appear in the same recurrence rule.
For a fictional weekly course starting at 09:00 UTC on Monday 2 November 2026, RRULE:FREQ=WEEKLY;COUNT=4 generates 2, 9, 16 and 23 November. COUNT=4 does not mean four additional weeks after the first lesson.
Calculate an inclusive UNTIL
With DTSTART:20261102T090000Z, the alternative rule RRULE:FREQ=WEEKLY;UNTIL=20261123T090000Z includes the occurrence at the boundary, so the same four Mondays result. An UNTIL one second before that final start would exclude 23 November. The end of a meeting’s duration does not determine whether its start is generated by the rule.
Match the required value type and time basis. A DATE start uses a DATE boundary; a UTC or time-zone-referenced DATE-TIME start requires a UTC UNTIL under the RFC. This page uses UTC to keep the arithmetic explicit. It does not claim every calendar editor lets users type raw rule strings.
Apply exclusions after generating the dates
Now add EXDATE:20261109T090000Z to the COUNT=4 example. The final visible starts are 2, 16 and 23 November: three sessions. Section 3.8.5.1 says exclusion dates take precedence over the rule’s included starts. The rule does not automatically grow a fifth generated Monday to compensate.
If the actual agreement requires four attended dates while skipping 9 November, choose a schedule whose final set is 2, 16, 23 and 30 November. For this simple weekly example, COUNT=5 plus that exclusion produces those dates. A provider may expose a different supported control or representation; inspect the final dates rather than assuming a label means attended sessions.
Verify the tail as well as the first week
Write down the first occurrence, the skipped date, the intended last occurrence and the following week. Check each after a supported edit in the owning provider. A correct next appointment does not prove the series ends correctly.
Cloud Calendars can display a schedule, but this technical example does not promise raw RRULE or EXDATE editing in its interface. For a change the app does not expose, use the provider’s documented recurrence controls. Preserve existing exceptions before making a series-wide change.
What it looks like
Cloud Calendars overview, using our product images. Provider settings and protocol examples described in this guide are separate from the screens shown here.
What to do
- Decide whether the agreement limits generated occurrences or a final date.
- Count DTSTART as the first occurrence.
- Apply exclusions and count the remaining dates.
- Inspect the last intended occurrence and following week using the owning provider.
Questions
- Can I use COUNT and UNTIL together?
- Not in the same RRULE under RFC 5545. Choose a valid rule and verify the actual generated set.
- Does a skipped holiday automatically add another session?
- No. An EXDATE removes an included occurrence; it does not automatically extend a COUNT-limited rule.

