I would use the basic running total variable solution. I think there is something in the FAQs about this. Essentially, what you're doing is creating a variable that accumulates a value for all the items in a group, another that accumulates a value for all the items in the report, and a third that resides in the group header and resets the group accumulator variable to zero whenever the group changes.