Dear CD Evans,
Using a two-pass project like you describe is frequently the most flexible way to cope with data where you need to handle the relationship between rows.
There might, though, be a chance in your case to use a single-pass model, as the data is always at the end of the previous row, by using an Append/Detail or Detail/Footer pair of templates. If you want to see an example, please feel free to email me a sample report.
You'll need to watch out for exceptions in the first and last rows of data in either case.