0 does double duty as meaning itself and to indicate underflow due to multiplying very small numbers.
If you have a function that can experience underflow it can be useful to preserve the sign of the underflowing value.
Otherwise you'd need more checks to get that information.