While working on #636, I discovered that the nudge and rounding code all uses Sign, which is Positive/Negative/Zero. However, in the spec, it is only allowed to be Positive or Negative. This leads to confusion around the zero case.
We should use a different enum, maybe InternalSign.