Coverity found that one safety check (kassert) was not
functional, as possible incorrect subtractions during
the accounting wouldn't show up as (invalid) negative
values.
Also reshuffle the zeroing of these variables to align
with the struct (ascending addresses).
Reported by: gallatin