diff --git a/code/numbers.lisp b/code/numbers.lisp
index 1cd934d197e724ea94218aed27474f0d914d299f..75630b776b0a573ef172e42f15e8bf5057d346ea 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.4 1990/07/06 21:22:32 wlott Exp $
+;;; $Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/code/numbers.lisp,v 1.5 1990/07/07 13:30:50 ram Exp $
 ;;;
 ;;; This file contains the definitions of most number functions.
 ;;;
@@ -753,7 +753,9 @@
     ((double-float single-float)
      (,op x (coerce y 'double-float)))
     (((foreach single-float double-float) rational)
-     (,op (rational x) y))
+     (if (eql y 0)
+	 (,op x (coerce 0 '(dispatch-type x)))
+	 (,op (rational x) y)))
     (((foreach bignum fixnum ratio) float)
      (,op x (rational y)))
 
@@ -1223,25 +1225,13 @@
 
 ;;;; Random number predicates:
 
-(defun zerop (number)
-  "Returns T if number = 0, NIL otherwise."
-  (zerop number))
-
-(defun plusp (number)
-  "Returns T if number > 0, NIL otherwise."
-  (plusp number))
-
-(defun minusp (number)
-  "Returns T if number < 0, NIL otherwise."
-  (minusp number))
-
-(defun oddp (number)
-  "Returns T if number is odd, NIL otherwise."
-  (oddp number))
-
-(defun evenp (number)
-  "Returns T if number is even, NIL otherwise."
-  (evenp number))
+(macrolet ((frob (name doc)
+	     `(defun ,name (number) ,doc (,name number))))
+  (frob zerop "Returns T if number = 0, NIL otherwise.")
+  (frob plusp "Returns T if number > 0, NIL otherwise.")
+  (frob minusp "Returns T if number < 0, NIL otherwise.")
+  (frob oddp "Returns T if number is odd, NIL otherwise.")
+  (frob evenp "Returns T if number is even, NIL otherwise."))
 
 
 ;;; Float operations:
@@ -1293,8 +1283,8 @@
    representation of it's argument.  See Common Lisp: The Language
    by Guy Steele for more details."
   (number-dispatch ((f float))
-    ((single-float) 24)
-    ((double-float) 53)))
+    ((single-float) single-float-digits)
+    ((double-float) double-float-digits)))
 
 (defun float-precision (f)
   "Returns a non-negative number of significant radix-b digits