There appears to be a slight inconsistency in the way monthly recurrences on day 29, 30 and 31 are handled by DateTime::Event::ICal. With bymonthday set to 29, for a non-leap year, March 1st gets included in the set in place of non-existent February 29. But with bymonthday set to 30, the February recurrence is skipped. And with bymonthday set to 31, any months with <31 days is skipped. I imagine this is because February can sometimes contain 29 days, but it seems like this should be handled consistently ... either the months without the requested day should always be skipped, or the 1st of the next month always included.
RRULE:FREQ=MONTHLY;BYMONTHDAY=29; DTSTART: 2005-01-01 Set with count=12 contains: 2005-01-29 2005-03-01 2005-03-29 2005-04-29 2005-05-29 2005-06-29 2005-07-29 2005-08-29 2005-09-29 2005-10-29 2005-11-29 2005-12-29 RRULE:FREQ=MONTHLY;BYMONTHDAY=30; DTSTART: 2005-01-01 Set with count=12 contains: 2005-01-30 2005-03-30 2005-04-30 2005-05-30 2005-06-30 2005-07-30 2005-08-30 2005-09-30 2005-10-30 2005-11-30 2005-12-30 2006-01-30 RRULE:FREQ=MONTHLY;BYMONTHDAY=31; DTSTART: 2005-01-01 Set with count=12 contains: 2005-01-31 2005-03-31 2005-05-31 2005-07-31 2005-08-31 2005-10-31 2005-12-31 2006-01-31 2006-03-31 2006-05-31 2006-07-31 2006-08-31 Bridget Almas [EMAIL PROTECTED] <mailto:[EMAIL PROTECTED]> Ovid Technologies