When a preprocessing step is executed it can store old value to be used when it's processed next time (change calculations, throttling). In the case of preprocessing step error this value is resetted.
However the final return code is used to check if the history value has to be resetted. There could be a situation when preprocessing step failed, but the result was overwritten with 'set value' on fail action. In this case the history value will not be resetted, while in theory it should.