This design works in Auto layout, some modifications needed for Fixed layout (i.e. page breaks)<br />
<br />
Tips:<br />
<br />
Set page break interval in table equal to the inner divisor in filter expression<br />
<br />
Make sure the number of columns divides into the rows evenly<br />
<br />
valid
BirtMath.mod(BirtMath.roundUp((row["rowNum"]/30)),3)
BirtMath.mod(BirtMath.roundUp((row["rowNum"]/32)),4)
<br />
not valid
BirtMath.mod(BirtMath.roundUp((row["rowNum"]/31)),3)
BirtMath.mod(BirtMath.roundUp((row["rowNum"]/30)),4)