Stop donating once the target level is achieved

Also switched to a record accumulator for clarity.

BugzID: 24466