diff --git a/code/macros.lisp b/code/macros.lisp
index a6634a43e2cd43cc7a4f5942b6ecb96c2b59a132..30efb7e6b0981f8acc0f3f550bb264dc501b60ff 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.100 2004/05/18 13:43:08 rtoy Exp $")
+  "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/code/macros.lisp,v 1.101 2004/06/29 20:44:40 rtoy Exp $")
 ;;;
 ;;; **********************************************************************
 ;;;
@@ -1257,9 +1257,12 @@
       (dolist (place places)
 	(multiple-value-bind (dummies vals newval setter getter)
 	    (get-setf-expansion place env)
-	  (setf all-dummies (append all-dummies dummies))
-	  (setf all-vals (append all-vals vals))
-	  (setf newvals (append newvals newval))
+	  ;; ANSI CL 5.1.2.3 explains that extra places are set to
+	  ;; nil.
+	  (setf all-dummies (append all-dummies dummies (cdr newval)))
+	  (setf all-vals (append all-vals vals
+				 (mapcar (constantly nil) (cdr newval))))
+	  (setf newvals (append newvals (list (car newval))))
 	  (setters setter)
 	  (getters getter)))
       (values all-dummies all-vals newvals