you could use a flag as to which date to use.
you could enter the date (since the 15th may not fall on a weekday)
let's say we do that, for example:
in the Report/Selection Formulas/Record, a formula like this should work:
local datetimevar startDay;
local datetimevar endDay;
local datetimevar this := {?parameter};
local datetimevar nMonth := DATEADD("m",1,this);
if DAY(this) = 15 then(
startDay := CDATE(MONTH(this), 1, YEAR(this));
endDay := CDATE(MONTH(this), 15, YEAR(this));
)
else(
startDay := CDATE(MONTH(this), 16, YEAR(this));
endDay := DATEADD("d", -1, CDATE(MONTH(nMonth), 1, YEAR(nMonth)));
)
{table.datefield} in startDay to endDay
I might have the CDATE() parameters confused, but this would be the general idea.
HTH