DEFINE CLASS MyRL AS ReportListener nStretchRect = 0 && Recno of our stretchy rectangle ... FUNCTION BeforeReport ** Find the stretchy rectangle SET DATASESSION TO (This.FRXDataSession) SELECT frx LOCATE FOR "*:stretchy" $ comment IF FOUND() This.nStretchRect = RECNO() ENDIF SET DATASESSION TO (This.CurrentDataSession) ENDFUNC FUNCTION AdjustObjectSize(nFRXRecNo, oProp) IF nFRXRecNo = This.nStretchRect AND isthirdup ** We are on the strtch rectangle and the 3rd from ** the bottom record... ** Do we have enough room to draw 3 detail bands? IF oProp.Height*3 < oProp.MaxHeightAvailable ** If not, force this band to take up all avaiable ** space so the last 2 detail bands will start ** on a new page oProp.Height = oProp.MaxHeightAvailable oProp.Reload = .T. ENDIF ENDIF ENDFUNC ENDDEFINEOf course there could be other factors invloved here, but maybe this will give you another approach to try.