This is definitely a code bug and is caused when there are a lot of repeating events, because repeating events are not handled correctly. We use tons of repeating events, perhaps 25 or more per month. The problem is in the SQL in db_query_events function of ajax_events_calendar.php. Because repeating events are stored in AEC_EVENT_TABLE with the first occurrence date (date and time), the ORDER BY start clause will always sort repeating events to the top over non-repeating events. If the eventlist limit is increased to a number greater than the number of repeating events, then the non-repeating events start showing up again. However, for us, setting the limit to 25+ events in a sidebar widget is far too many. So this bug basically makes the eventlist widget unusable on our site. The SQL is broken for eventlist and needs to be fixed.
Event1: 2013-05-05 08:00AM – 08:15AM No repeat
Event2: 2013-04-28 08:15AM – 09:15AM Repeat weekly until 2013-12-31
Event3: 2013-04-28 09:30AM – 10:15AM Repeat weekly until 2013-12-31
Event4: 2013-04-28 11:00AM – 11:45AM Repeat weekly until 2013-12-31
Looking at eventlist limit=3 on 2013-05-04 (1 day before all these events on 2013-05-05), Event1 does not display because the repeating events order higher than the non-repeating event. Event1 should display in this case and Event4 should not. Herein lies the problem.
If you change limit=4, Event1 will display correctly.
Unfortunately, there is not a simple fix for this in the SQL (or I would hack it myself), because of how repeating events are stored as a single row in the table with only the first occurrence date. Basically, for a repeating event, the “next” occurrence date needs to be calculated and used for sorting.
This problem is also discussed in this wp-aec project page: