diff --git a/ansi-tests/load-numbers.lsp b/ansi-tests/load-numbers.lsp
index b668ae920edf7afb89d88a5f01941c4a420fa6e6..1a3df30494cca39e6d1c91d48fc628ade81be73d 100644
--- a/ansi-tests/load-numbers.lsp
+++ b/ansi-tests/load-numbers.lsp
@@ -8,3 +8,4 @@
 (compile-and-load "numbers-aux.lsp")
 (load "number-comparison.lsp")
 (load "max.lsp")
+(load "min.lsp")
diff --git a/ansi-tests/max.lsp b/ansi-tests/max.lsp
index 76ebdb9d5a07c974e8bb674c1da9ddbd869f093a..4e7cffc91425c9a19842aa3524907f86011ca461 100644
--- a/ansi-tests/max.lsp
+++ b/ansi-tests/max.lsp
@@ -34,3 +34,212 @@
 (deftest max.2
   (max.2-fn)
   nil)
+
+(deftest max.3
+  (loop for x = (- (random 60000) 30000)
+	for y = (- (random 60000) 30000)
+	for m = (max x y)
+	for m2 = (if (>= x y) x y)
+	repeat 1000
+	unless (eql m m2)
+	collect (list x y m m2))
+  nil)
+
+(deftest max.4
+  (loop for x = (- (random 6000000) 3000000)
+	for y = (- (random 6000000) 3000000)
+	for m = (max x y)
+	for m2 = (if (>= x y) x y)
+	repeat 1000
+	unless (eql m m2)
+	collect (list x y m m2))
+  nil)
+
+(deftest max.5
+  (loop for x = (- (random 1000000000000) 500000000000)
+	for y = (- (random 1000000000000) 500000000000)
+	for m = (max x y)
+	for m2 = (if (>= x y) x y)
+	repeat 1000
+	unless (eql m m2)
+	collect (list x y m m2))
+  nil)
+
+(deftest max.6
+  (let ((m (max 2 1.0s0)))
+    (or (eqlt m 2)
+	(eqlt m 2.0s0)))
+  t)
+
+(deftest max.7
+  (max 0 1.0s0)
+  1.0s0)
+
+(deftest max.8
+  (let ((m (max 2 1.0f0)))
+    (or (eqlt m 2)
+	(eqlt m 2.0f0)))
+  t)
+
+(deftest max.9
+  (max 0 1.0f0)
+  1.0f0)
+
+(deftest max.10
+  (let ((m (max 2 1.0d0)))
+    (or (eqlt m 2)
+	(eqlt m 2.0d0)))
+  t)
+
+(deftest max.11
+  (max 0 1.0d0)
+  1.0d0)
+
+(deftest max.12
+  (let ((m (max 2 1.0l0)))
+    (or (eqlt m 2)
+	(eqlt m 2.0l0)))
+  t)
+
+(deftest max.13
+  (max 0 1.0l0)
+  1.0l0)
+
+(deftest max.15
+  (let ((m (max 1.0s0 0.0f0)))
+    (or (eqlt m 1.0s0)
+	(eqlt m 1.0f0)))
+  t)
+
+(deftest max.16
+  (max 0.0s0 1.0f0)
+  1.0f0)
+
+(deftest max.17
+  (let ((m (max 1.0s0 0.0d0)))
+    (or (eqlt m 1.0s0)
+	(eqlt m 1.0d0)))
+  t)
+
+(deftest max.18
+  (max 0.0s0 1.0d0)
+  1.0d0)
+
+(deftest max.19
+  (let ((m (max 1.0s0 0.0l0)))
+    (or (eqlt m 1.0s0)
+	(eqlt m 1.0l0)))
+  t)
+
+(deftest max.20
+  (max 0.0s0 1.0l0)
+  1.0l0)
+
+(deftest max.21
+  (let ((m (max 1.0f0 0.0d0)))
+    (or (eqlt m 1.0f0)
+	(eqlt m 1.0d0)))
+  t)
+
+(deftest max.22
+  (max 0.0f0 1.0d0)
+  1.0d0)
+
+(deftest max.23
+  (let ((m (max 1.0f0 0.0l0)))
+    (or (eqlt m 1.0f0)
+	(eqlt m 1.0l0)))
+  t)
+
+(deftest max.24
+  (max 0.0f0 1.0l0)
+  1.0l0)
+
+(deftest max.25
+  (let ((m (max 1.0d0 0.0l0)))
+    (or (eqlt m 1.0d0)
+	(eqlt m 1.0l0)))
+  t)
+
+(deftest max.26
+  (max 0.0d0 1.0l0)
+  1.0l0)
+
+(deftest max.27
+  (loop for i from 1 to (min 256 call-arguments-limit)
+	for x = (make-list i :initial-element 0)
+	do (setf (elt x (random i)) 1)
+	unless (eql (apply #'max x) 1)
+	collect x)
+  nil)
+
+(deftest max.28
+  (let ((m (max 1/3 0.2s0)))
+    (or (eqlt m 1/3)
+	(eqlt m (float 1/3 0.2s0))))
+  t)
+
+(deftest max.29
+  (let ((m (max 1.0s0 3 2.0f0)))
+    (or (eqlt m 3)
+	(eqlt m 3.0f0)))
+  t)
+
+(deftest max.30
+  (let ((m (max 1.0d0 3 2.0f0)))
+    (or (eqlt m 3)
+	(eqlt m 3.0d0)))
+  t)
+
+(deftest max.31
+  (let ((m (max 1.0s0 3 2.0l0)))
+    (or (eqlt m 3)
+	(eqlt m 3.0l0)))
+  t)
+
+(deftest max.32
+  (let ((m (max 1.0l0 3 2.0s0)))
+    (or (eqlt m 3)
+	(eqlt m 3.0l0)))
+  t)
+
+(deftest max.33
+  (let ((m (max 1.0d0 3 2.0l0)))
+    (or (eqlt m 3)
+	(eqlt m 3.0l0)))
+  t)
+
+(deftest max.34
+  (let ((m (max 1.0l0 3 2.0d0)))
+    (or (eqlt m 3)
+	(eqlt m 3.0l0)))
+  t)
+
+(deftest max.order.1
+  (let ((i 0) x y)
+    (values
+     (max (progn (setf x (incf i)) 10)
+	  (progn (setf y (incf i)) 20))
+     i x y))
+  20 2 1 2)
+
+(deftest max.order.2
+  (let ((i 0) x y z)
+    (values
+     (max (progn (setf x (incf i)) 10)
+	  (progn (setf y (incf i)) 20)
+	  (progn (setf z (incf i)) 30))
+     i x y z))
+  30 3 1 2 3)
+
+(deftest max.order.3
+  (let ((i 0) u v w x y z)
+    (values
+     (max (progn (setf u (incf i)) 10)
+	  (progn (setf v (incf i)) 20)
+	  (progn (setf w (incf i)) 30)
+	  (progn (setf x (incf i)) 10)
+	  (progn (setf y (incf i)) 20)
+	  (progn (setf z (incf i)) 30))
+     i u v w x y z))
+  30 6 1 2 3 4 5 6)
diff --git a/ansi-tests/min.lsp b/ansi-tests/min.lsp
new file mode 100644
index 0000000000000000000000000000000000000000..b3cf37b90cf14ce64777af013e299cd6e1fa14cc
--- /dev/null
+++ b/ansi-tests/min.lsp
@@ -0,0 +1,245 @@
+;-*- Mode:     Lisp -*-
+;;;; Author:   Paul Dietz
+;;;; Created:  Mon Aug  4 21:24:45 2003
+;;;; Contains: Tests of MIN
+
+(in-package :cl-test)
+
+(compile-and-load "numbers-aux.lsp")
+
+(deftest min.error.1
+  (classify-error (min))
+  program-error)
+
+(deftest min.error.2
+  (loop for x in *mini-universe*
+	unless (or (realp x)
+		   (eq (classify-error** `(classify-error (min ',x)))
+		       'type-error))
+	collect x)
+  nil)
+
+(deftest min.1
+  (loop for n in *reals*
+	when (or (not (eql (min n) n))
+		 (not (eql (min n n) n))
+		 (not (eql (min n n n) n))
+		 (not (eql (apply #'min (make-list
+					 (min 256 call-arguments-limit)
+					 :initial-element n))
+			   n)))
+	collect n)
+  nil)
+
+(deftest min.2
+  (min.2-fn)
+  nil)
+
+(deftest min.3
+  (loop for x = (- (random 60000) 30000)
+	for y = (- (random 60000) 30000)
+	for m = (min x y)
+	for m2 = (if (<= x y) x y)
+	repeat 1000
+	unless (eql m m2)
+	collect (list x y m m2))
+  nil)
+
+(deftest min.4
+  (loop for x = (- (random 6000000) 3000000)
+	for y = (- (random 6000000) 3000000)
+	for m = (min x y)
+	for m2 = (if (<= x y) x y)
+	repeat 1000
+	unless (eql m m2)
+	collect (list x y m m2))
+  nil)
+
+(deftest min.5
+  (loop for x = (- (random 1000000000000) 500000000000)
+	for y = (- (random 1000000000000) 500000000000)
+	for m = (min x y)
+	for m2 = (if (<= x y) x y)
+	repeat 1000
+	unless (eql m m2)
+	collect (list x y m m2))
+  nil)
+
+(deftest min.6
+  (let ((m (min 0 1.0s0)))
+    (or (eqlt m 0)
+	(eqlt m 0.0s0)))
+  t)
+
+(deftest min.7
+  (min 2 1.0s0)
+  1.0s0)
+
+(deftest min.8
+  (let ((m (min 2 3.0f0)))
+    (or (eqlt m 2)
+	(eqlt m 2.0f0)))
+  t)
+
+(deftest min.9
+  (min 2 1.0f0)
+  1.0f0)
+
+(deftest min.10
+  (let ((m (min 2 10.0d0)))
+    (or (eqlt m 2)
+	(eqlt m 2.0d0)))
+  t)
+
+(deftest min.11
+  (min 100 1.0d0)
+  1.0d0)
+
+(deftest min.12
+  (let ((m (min 2 17.25l0)))
+    (or (eqlt m 2)
+	(eqlt m 2.0l0)))
+  t)
+
+(deftest min.13
+  (min 2 1.0l0)
+  1.0l0)
+
+(deftest min.15
+  (let ((m (min 1.0s0 2.0f0)))
+    (or (eqlt m 1.0s0)
+	(eqlt m 1.0f0)))
+  t)
+
+(deftest min.16
+  (min 3.0s0 1.0f0)
+  1.0f0)
+
+(deftest min.17
+  (let ((m (min 1.0s0 2.0d0)))
+    (or (eqlt m 1.0s0)
+	(eqlt m 1.0d0)))
+  t)
+
+(deftest min.18
+  (min 5.0s0 1.0d0)
+  1.0d0)
+
+(deftest min.19
+  (let ((m (min 1.0s0 2.0l0)))
+    (or (eqlt m 1.0s0)
+	(eqlt m 1.0l0)))
+  t)
+
+(deftest min.20
+  (min 2.0s0 1.0l0)
+  1.0l0)
+
+(deftest min.21
+  (let ((m (min 1.0f0 2.0d0)))
+    (or (eqlt m 1.0f0)
+	(eqlt m 1.0d0)))
+  t)
+
+(deftest min.22
+  (min 18.0f0 1.0d0)
+  1.0d0)
+
+(deftest min.23
+  (let ((m (min 1.0f0 100.0l0)))
+    (or (eqlt m 1.0f0)
+	(eqlt m 1.0l0)))
+  t)
+
+(deftest min.24
+  (min 19.0f0 1.0l0)
+  1.0l0)
+
+(deftest min.25
+  (let ((m (min 1.0d0 12.0l0)))
+    (or (eqlt m 1.0d0)
+	(eqlt m 1.0l0)))
+  t)
+
+(deftest min.26
+  (min 15.0d0 1.0l0)
+  1.0l0)
+
+(deftest min.27
+  (loop for i from 1 to (min 256 call-arguments-limit)
+	for x = (make-list i :initial-element 1)
+	do (setf (elt x (random i)) 0)
+	unless (eql (apply #'min x) 0)
+	collect x)
+  nil)
+
+(deftest min.28
+  (let ((m (min 1/3 0.8s0)))
+    (or (eqlt m 1/3)
+	(eqlt m (float 1/3 0.8s0))))
+  t)
+
+(deftest min.29
+  (let ((m (min 1.0s0 -3 2.0f0)))
+    (or (eqlt m -3)
+	(eqlt m -3.0f0)))
+  t)
+
+(deftest min.30
+  (let ((m (min 1.0d0 -3 2.0f0)))
+    (or (eqlt m -3)
+	(eqlt m -3.0d0)))
+  t)
+
+(deftest min.31
+  (let ((m (min 1.0s0 -3 2.0l0)))
+    (or (eqlt m -3)
+	(eqlt m -3.0l0)))
+  t)
+
+(deftest min.32
+  (let ((m (min 1.0l0 -3 2.0s0)))
+    (or (eqlt m -3)
+	(eqlt m -3.0l0)))
+  t)
+
+(deftest min.33
+  (let ((m (min 1.0d0 -3 2.0l0)))
+    (or (eqlt m -3)
+	(eqlt m -3.0l0)))
+  t)
+
+(deftest min.34
+  (let ((m (min 1.0l0 -3 2.0d0)))
+    (or (eqlt m -3)
+	(eqlt m -3.0l0)))
+  t)
+
+(deftest min.order.1
+  (let ((i 0) x y)
+    (values
+     (min (progn (setf x (incf i)) 10)
+	  (progn (setf y (incf i)) 20))
+     i x y))
+  10 2 1 2)
+
+(deftest min.order.2
+  (let ((i 0) x y z)
+    (values
+     (min (progn (setf x (incf i)) 10)
+	  (progn (setf y (incf i)) 20)
+	  (progn (setf z (incf i)) 30))
+     i x y z))
+  10 3 1 2 3)
+
+(deftest min.order.3
+  (let ((i 0) u v w x y z)
+    (values
+     (min (progn (setf u (incf i)) 10)
+	  (progn (setf v (incf i)) 20)
+	  (progn (setf w (incf i)) 30)
+	  (progn (setf x (incf i)) 10)
+	  (progn (setf y (incf i)) 20)
+	  (progn (setf z (incf i)) 30))
+     i u v w x y z))
+  10 6 1 2 3 4 5 6)
diff --git a/ansi-tests/numbers-aux.lsp b/ansi-tests/numbers-aux.lsp
index 22db26fe269bfb7ffaa4965be3d323153c6bfc8b..df62793555f38c3c68b3120d5d95000181297c46 100644
--- a/ansi-tests/numbers-aux.lsp
+++ b/ansi-tests/numbers-aux.lsp
@@ -117,3 +117,12 @@
 	      unless (and (>= m x) (>= m y)
 			  (or (= m x) (= m y)))
 	      collect (list x y m))))
+
+(defun min.2-fn ()
+  (loop for x in *reals*
+	nconc
+	(loop for y in *reals*
+	      for m = (min x y)
+	      unless (and (<= m x) (<= m y)
+			  (or (= m x) (= m y)))
+	      collect (list x y m))))