1.0.19.34: Fix minor bug in TIME.
[sbcl.git] / src / code / time.lisp
index deda6de..db7829c 100644 (file)
@@ -324,18 +324,20 @@ normally during operations like SLEEP."
     (write-char #\- stream)
     (setf number (- number)))
   (let ((scale (expt 10 power)))
-    (flet ((%fraction (fraction)
-             (let ((scaled (* 10 fraction)))
-               (loop while (< scaled scale)
-                     do (write-char #\0 stream)
-                        (setf scaled (* scaled 10))))
-             (format stream "~D" fraction))
-           (%zeroes ()
-             (let ((scaled (/ scale 10)))
-               (write-char #\0 stream)
-               (loop while (> scaled 1)
-                     do (write-char #\0 stream)
-                        (setf scaled (/ scaled 10))))))
+    (labels ((%fraction (fraction)
+               (if (zerop fraction)
+                   (%zeroes)
+                   (let ((scaled (* 10 fraction)))
+                     (loop while (< scaled scale)
+                           do (write-char #\0 stream)
+                              (setf scaled (* scaled 10)))))
+               (format stream "~D" fraction))
+             (%zeroes ()
+               (let ((scaled (/ scale 10)))
+                 (write-char #\0 stream)
+                 (loop while (> scaled 1)
+                       do (write-char #\0 stream)
+                          (setf scaled (/ scaled 10))))))
       (cond ((zerop number)
              (write-string "0." stream)
              (%zeroes))