Because multiplication is sign preserving. The 0 argument might really be something that already underflowed. That is, $x * $y where $y is the canonocal representation of zero. $y might have come from another calculation. You generally don't multiply by a literal zero, since you could just leave the code out. UNLESS you wanted the sign. So that's what you got.