diff --git a/code/macros.lisp b/code/macros.lisp
index 30efb7e6b0981f8acc0f3f550bb264dc501b60ff..4918550d45986d4e54492431ee1583979bb59961 100644
--- a/code/macros.lisp
+++ b/code/macros.lisp
@@ -5,7 +5,7 @@
 ;;; Carnegie Mellon University, and has been placed in the public domain.
 ;;;
 (ext:file-comment
-  "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/code/macros.lisp,v 1.101 2004/06/29 20:44:40 rtoy Exp $")
+  "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/code/macros.lisp,v 1.102 2004/10/14 13:46:30 rtoy Exp $")
 ;;;
 ;;; **********************************************************************
 ;;;
@@ -1307,7 +1307,13 @@
 			(error "No default clause allowed in ~S: ~S" name case)
 			(push `(t nil ,@(rest case)) clauses)))
 		   ((and (eq name 'case))
-		    (error "T and OTHERWISE may not be used as key designators for ~A" name))))
+		    (error "T and OTHERWISE may not be used as key designators for ~A" name))
+		   ((eq (first case) t)
+		    ;; The key T is normal clause, because it's not
+		    ;; the last clause.
+		    (push (first case) keys)
+		    (push `((,test ,keyform-value
+			    ',(first case)) nil ,@(rest case)) clauses))))
 	    ((and multi-p (listp (first case)))
 	     (setf keys (append (first case) keys))
 	     (push `((or ,@(mapcar #'(lambda (key)