Plone.app.event EventAccessor and first/last events

I'm working on a site (Plone 5.2.5, plone.app.events 3.2.12) that is making heavy use of events and recurring events, and trying to make use of https://fullcalendar.io/ as well. This mostly works well except for a behavior that the dx EventAccessor does which leads to a couple issues. I have no problem overriding this accessor with a custom one, but I'm curious if anyone has insight on why it was done this way or if it's going to be a problem to change it.

First, let me point out the behavior: plone.app.event/behaviors.py at 3.2.12 · plone/plone.app.event · GitHub (and similarly with the end property). When getting the event object for an event that has recurrences, this actually gives you the start/end dates of the next occurrence, instead of the initial event. This seems weird to me and I'm planning to change this to instead get the start/end date of the initial object. The recurrences already have their own instances in a listing.

Problem 1:
When using the past/future moded event listing, my users expect to see the past iterations in the past mode. But because the start is defined as the start of the next occurrence, you really only see future occurrences.

Problem 2:
The fullcalendar implementation is fed JSON data that is generated through the same APIs used in the default event listing. The only real difference is the date range. Say you have an event that starts on 3 March and repeats every 7 days for X number of times, and say the current day is 7 March. I would expect the calendar to show a 'past' date of 3 March, then 10 March, etc. Instead I am shown duplicate events for 10 March. What's happening is that it gets the event object and recurrences and converts them all into occurrences plone.app.event/base.py at 3.2.12 · plone/plone.app.event · GitHub and plone.app.event/base.py at 3.2.12 · plone/plone.app.event · GitHub. Because the start/end date of the event object is set to that of the next occurrence, we get 10 March. This is only not a problem on the default event_listing because the date range is only ever past or future and would never include both of these events. But I can't do this with the calendar, I need to get a whole month which can include a mix of past/future.

Again, what I really want to do is override the accesor so that it just uses the original event object's start/end dates instead of the next occurrence. At a cursory glance this seems like it might work, but I've learned from working on these events that small changes can have big consequences. I don't understand why it would want to set the start/end this way in the first place.

Plone Foundation Code of Conduct