--- format_number.module.old    2009-01-03 20:35:22.000000000 +0100
+++ format_number.module        2009-01-03 20:55:25.000000000 +0100
@@ -155,11 +155,11 @@ function format_number($number, $decimal
   if (is_numeric($number)) {
     $number = sprintf('%f', (float)$number);
   }
-  if ($decimals < 0 && strpos($number, '.') !== FALSE) {
-    // Count relevant decimal places.
-    $decimals = strlen(preg_replace('#^.*\.([0-9]*?)0*$#', '\1', $number));
+  if ($decimals < 0) {
+    // Count decimal places (ignoring trailing zeros to the right of the decimal point).
+    $decimals = (strpos($number, '.') === FALSE ? 0 : strlen(preg_replace('#^.*\.([0-9]*?)0*$#', '\1', $number)));
   }
-  return number_format($number, $decimals, $format_options['decimal_point'], $format_options['thousands_sep']);
+  return str_replace(array('X', 'Z'), array($format_options['decimal_point'], $format_options['thousands_sep']), number_format($number, $decimals, 'X', 'Z'));
 }

 /**
