diff --git a/lib/Data/Format.hs b/lib/Data/Format.hs
index 8adb892b29162a1aaec33038c0e6aa90ea22127e..15ea1a3094c7bb178585b66ebf5a0e66b6942c64 100644
--- a/lib/Data/Format.hs
+++ b/lib/Data/Format.hs
@@ -227,11 +227,11 @@ zeroPad Nothing s = s
 zeroPad (Just i) s = replicate (i - length s) '0' ++ s
 
 trimTrailing :: String -> String
-trimTrailing "" = ""
-trimTrailing "." = ""
-trimTrailing s
-    | last s == '0' = trimTrailing $ init s
-trimTrailing s = s
+trimTrailing
+    = (\s -> if s == "." then "" else s)
+    . reverse
+    . dropWhile (== '0')
+    . reverse
 
 showNumber :: Show t => SignOption -> Maybe Int -> t -> Maybe String
 showNumber signOpt mdigitcount t =