You are definitely right and a clever trick to use the *floor()* function to strip off the integer part.

Besides Easter Sunday, another example is calculating the oscillation of the Harvest Moon, which is the full moon nearest the first day of fall. There is a physical justification for this date, as it is a day that will provide the longest duration of light -- so that farmers can collect their harvest well in to the night.

And the connection to QBO is that lunisolar tides are [strong at this time](http://earthsky.org/space/harvest-moon-2)

> "Here’s what you can notice, if you live on a coastline. Watch for this full moon to bring along wide-ranging spring tides along ocean coastlines for several days following full moon. That is, high tides will climb extra high and the low tides will fall exceptionally low."

The next step is to understand why the QBO period requires the Draconic lunar month (27.2122 days) and not the Tropical lunar month (27.3215 days).
Hint: symmetry