Thanks for your help!
Much appreciated.
I can also use this formula as my 'on change of' field to get my desired result - or at least parts of it.
If Month({Data.Date}) <> Month(CurrentDate)
Then DateSerial(Year({Data.Date}), Month({Data.Date}) + 1, 1) - 1
Else {Data.Date}
What this does is, for every month prior to the current month, amend the
date to the last day of its respective month, but leave the dates for
the current month unchanged.