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)))