diff --git a/code/numbers.lisp b/code/numbers.lisp
index 75630b776b0a573ef172e42f15e8bf5057d346ea..de76aa8fbda930def54360b6ace34e87ccd70bd8 100644
--- a/code/numbers.lisp
+++ b/code/numbers.lisp
@@ -7,7 +7,7 @@
 ;;; Scott Fahlman (FAHLMAN@CMUC). 
 ;;; **********************************************************************
 ;;;
-;;; $Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/code/numbers.lisp,v 1.5 1990/07/07 13:30:50 ram Exp $
+;;; $Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/code/numbers.lisp,v 1.6 1990/07/07 13:44:33 ram Exp $
 ;;;
 ;;; This file contains the definitions of most number functions.
 ;;;
@@ -1452,12 +1452,14 @@
     (((foreach single-float double-float))
      (multiple-value-bind (bits exp)
 			  (integer-decode-float x)
-       (let* ((int (if (minusp x) (- bits) bits))
-	      (digits (float-digits x))
-	      (ex (+ exp digits)))
-	 (if (minusp ex)
-	     (integer-/-integer int (ash 1 (+ digits (- ex))))
-	     (integer-/-integer (ash int ex) (ash 1 digits))))))
+       (if (eql bits 0)
+	   0
+	   (let* ((int (if (minusp x) (- bits) bits))
+		  (digits (float-digits x))
+		  (ex (+ exp digits)))
+	     (if (minusp ex)
+		 (integer-/-integer int (ash 1 (+ digits (- ex))))
+		 (integer-/-integer (ash int ex) (ash 1 digits)))))))
     ((rational) x)))