In case ayone else has this requirement, I managed to do this as follows:
1. I sett up two extra fields in the calendar:
Day(TempDate) AS DayLow,
if(Day(TempDate)<15,Day(TempDate)+16,Day(TempDate)-15) AS DayHigh // Start month
2. I set up a APHighOrLow variable on the front end that detected whether the dates would loop over the end of a month:
APEarliest was the day of the month for the 14 day period APStart, while APLatest was the day for the end of the analysis period
3. I used this variable as the Sort expression, to reference across to the Calendar sorting field I wanted to use
I hope this helps someone avoid a long day.