The way ComputeNumSignBits was being used was only correct if OuterBitSize is exactly 2x InnerBitSize. Which is always true, but not obviously so. Comparing ComputeMaxSignificantBits to InnerBitSize feels more correct.