@@ -73,12 +73,13 @@ decimal' :: (Integral a) => (a -> Bool) -> a -> Builder
7373{-# INLINE decimal' #-}
7474decimal' p i
7575 | i < 0 = if p i
76− then let (q, r) = (-i) `quotRem` 10
77− !n = countDigits q
76+ then let (q, r) = i `quotRem` 10
77+ qq = -q
78+ !n = countDigits qq
7879 in writeN (n + 2) $ \marr off -> do
7980 unsafeWrite marr off minus
80− posDecimal marr (off+1) n q
81− unsafeWrite marr (off+n+1) (i2w r)
81+ posDecimal marr (off+1) n qq
82+ unsafeWrite marr (off+n+1) (i2w (-r))
8283 else let j = -i
8384 !n = countDigits j
8485 in writeN (n + 1) $ \marr off ->