Refactored. Replaced left/right_surplus by right/left_subtract. Stable {msvc-9.0, partly congcc-4.3-a7}