Please refer to the attached gif file illustrating how to reproduce the problem with the Demo application. When you define a new appointment with 24 months interval, it is expected to have this event every 2 years, not each year. To reproduce: you can use the following code snippet as well: MonthlyRecurrenceRule monthlyRecurrenceRule = new MonthlyRecurrenceRule(DateTime.Now, WeekDays.Monday, 2, 24); Appointment a = new Appointment(DateTime.Now, TimeSpan.FromHours(3), "Test"); a.RecurrenceRule = monthlyRecurrenceRule; this.radScheduler1.Appointments.Add(a); Workaround: public Form1() { InitializeComponent(); this.radScheduler1.AppointmentAdded += radScheduler1_AppointmentAdded; } private void radScheduler1_AppointmentAdded(object sender, AppointmentAddedEventArgs e) { MonthlyRecurrenceRule montlyRule = e.Appointment.RecurrenceRule as MonthlyRecurrenceRule; if (montlyRule != null) { CustomMonthlyRecurrenceRule rrule = new CustomMonthlyRecurrenceRule(); rrule.Start = montlyRule.Start; rrule.End = montlyRule.End; rrule.Interval = montlyRule.Interval; rrule.Offset = montlyRule.Offset; rrule.WeekDays = montlyRule.WeekDays; rrule.WeekNumber = montlyRule.WeekNumber; rrule.FirstDayOfWeek = montlyRule.FirstDayOfWeek; rrule.Count = montlyRule.Count; e.Appointment.RecurrenceRule = rrule; } } public class CustomMonthlyRecurrenceRule : MonthlyRecurrenceRule { public override bool MatchAdvancedPattern(DateTime date, DateTimeFormatInfo dateTimeFormat) { int monthIndex = this.Start.Value.Month - date.Month; DateTime calculatedNextDate = this.Start.Value.AddMonths(this.Interval); monthIndex = calculatedNextDate.Month - date.Month; if (calculatedNextDate.Year > date.Year) { return false; } if ((monthIndex % this.Interval) != 0) { return false; } if (0 != this.WeekNumber && !this.MatchWeekOfMonth(date, dateTimeFormat)) { return false; } if (0 != this.DayNumber && !this.MatchDayOfMonth(date, dateTimeFormat)) { return false; } if (this.WeekDays != WeekDays.None && !this.MatchDayOfWeekMask(date, dateTimeFormat.Calendar)) { return false; } if (this.Offset != 0 && !this.MatchOffset(date, dateTimeFormat)) { return false; } return true; } }