RFC5545 Recurrence Rule Compliance - MONTHLY

Hi,
We have noticed an issue with the MONTHLY RRULE expansion and the resulting incorrect freebusy results.
When we create an event with RRULE:FREQ=MONTHLY;BYMONTHDAY=31, we get busy periods on October 1, December 1 etc in the freebusy results.

Constructing RRULE based on: '2021-07-31T13:00:00+02:00 Europe/Belgrade', rrule: 'FREQ=MONTHLY;BYMONTHDAY=31' (we float: no)
Frequency modify string is: '+1 month', base is: '2021-07-31T13:00:00+02:00'
Getting more instances from: '2021-07-31T13:00:00+02:00' - 0
Expanded BYMONTHDAY 31 into date 2021-07-31T13:00:00+02:00 from 2021-07-31T13:00:00+02:00
Inserting 1 from current_set into position 0
Added date 2021-07-31T13:00:00+02:00 into position 0 in current set
Returning date from position 0: 2021-07-31T13:00:00+02:00 (20210731T110000Z)
Getting more instances from: '2021-08-28T13:00:00+02:00' - 1
Expanded BYMONTHDAY 31 into date 2021-08-31T13:00:00+02:00 from 2021-08-28T13:00:00+02:00
Inserting 1 from current_set into position 1
Added date 2021-08-31T13:00:00+02:00 into position 1 in current set
Returning date from position 1: 2021-08-31T13:00:00+02:00 (20210831T110000Z)
Getting more instances from: '2021-09-28T13:00:00+02:00' - 2
Expanded BYMONTHDAY 31 into date 2021-10-01T13:00:00+02:00 from 2021-09-28T13:00:00+02:00
Inserting 1 from current_set into position 2
Added date 2021-10-01T13:00:00+02:00 into position 2 in current set
Returning date from position 2: 2021-10-01T13:00:00+02:00 (20211001T110000Z)
(...)
FREEBUSY;FBTYPE=BUSY:20210731T110000Z/20210731T120000Z
FREEBUSY;FBTYPE=BUSY:20210831T110000Z/20210831T120000Z
FREEBUSY;FBTYPE=BUSY:20211001T110000Z/20211001T120000Z
FREEBUSY;FBTYPE=BUSY:20211031T120000Z/20211031T130000Z
FREEBUSY;FBTYPE=BUSY:20211201T120000Z/20211201T130000Z
FREEBUSY;FBTYPE=BUSY:20211231T120000Z/20211231T130000Z

According to RFC5545:

Recurrence rules may generate recurrence instances with an invalid
date (e.g., February 30) or nonexistent local time (e.g., 1:30 AM
on a day where the local time is moved forward by an hour at 1:00
AM).  Such recurrence instances MUST be ignored and MUST NOT be
counted as part of the recurrence set.

In my example, i would expect the server to return:

FREEBUSY;FBTYPE=BUSY:20210731T110000Z/20210731T120000Z
FREEBUSY;FBTYPE=BUSY:20210831T110000Z/20210831T120000Z
FREEBUSY;FBTYPE=BUSY:20211031T120000Z/20211031T130000Z
FREEBUSY;FBTYPE=BUSY:20211231T120000Z/20211231T130000Z

Another similar problem occurs when BYMONTHDAY is not specified, and DTSTART is on the 29th or later day of the month - freebusy returns busy period on 28th day of each month:

RRULE: FREQ=MONTHLY (floating: no)
Constructing RRULE based on: '2021-07-31T13:00:00+02:00 Europe/Belgrade', rrule: 'FREQ=MONTHLY' (we float: no)
Frequency modify string is: '+1 month', base is: '2021-07-31T13:00:00+02:00'
Getting more instances from: '2021-07-31T13:00:00+02:00' - 0
Inserting 1 from current_set into position 0
Added date 2021-07-31T13:00:00+02:00 into position 0 in current set
Returning date from position 0: 2021-07-31T13:00:00+02:00 (20210731T110000Z)
Getting more instances from: '2021-08-28T13:00:00+02:00' - 1
Inserting 1 from current_set into position 1
Added date 2021-08-28T13:00:00+02:00 into position 1 in current set
Returning date from position 1: 2021-08-28T13:00:00+02:00 (20210828T110000Z)
Getting more instances from: '2021-09-28T13:00:00+02:00' - 2
Inserting 1 from current_set into position 2
Added date 2021-09-28T13:00:00+02:00 into position 2 in current set
Returning date from position 2: 2021-09-28T13:00:00+02:00 (20210928T110000Z)
Getting more instances from: '2021-10-28T13:00:00+02:00' - 3
Inserting 1 from current_set into position 3
(...)
FREEBUSY;FBTYPE=BUSY:20210731T110000Z/20210731T120000Z
FREEBUSY;FBTYPE=BUSY:20210828T110000Z/20210828T120000Z
FREEBUSY;FBTYPE=BUSY:20210928T110000Z/20210928T120000Z
FREEBUSY;FBTYPE=BUSY:20211028T110000Z/20211028T120000Z
FREEBUSY;FBTYPE=BUSY:20211128T120000Z/20211128T130000Z
FREEBUSY;FBTYPE=BUSY:20211228T120000Z/20211228T130000Z

Based on following excerpt from RFC5545, I would expect the same results as when BYMONTHDAY=31 is specified.

      Information, not contained in the rule, necessary to determine the
      various recurrence instance start time and dates are derived from
      the Start Time ("DTSTART") component attribute.  For example,
      "FREQ=YEARLY;BYMONTH=1" doesn't specify a specific day within the
      month or a time.  This information would be the same as what is
      specified for "DTSTART".