diff --git a/code/macros.lisp b/code/macros.lisp
index b2e7f0666d3a50cd9a5c15ebef3a996beed04a4a..a6634a43e2cd43cc7a4f5942b6ecb96c2b59a132 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.99 2004/05/06 14:36:47 rtoy Exp $")
+  "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/code/macros.lisp,v 1.100 2004/05/18 13:43:08 rtoy Exp $")
 ;;;
 ;;; **********************************************************************
 ;;;
@@ -543,18 +543,18 @@
 ;;;
 (defmacro multiple-value-setq (varlist value-form)
   (unless (and (listp varlist) (every #'symbolp varlist))
-    (error "Varlist is not a list of symbols: ~S." varlist))
+    (simple-program-error "Varlist is not a list of symbols: ~S." varlist))
   `(values (setf (values ,@varlist) ,value-form)))
 
 ;;;
 (defmacro multiple-value-bind (varlist value-form &body body)
   (unless (and (listp varlist) (every #'symbolp varlist))
-    (error "Varlist is not a list of symbols: ~S." varlist))
+    (simple-program-error  "Varlist is not a list of symbols: ~S." varlist))
   (if (= (length varlist) 1)
       `(let ((,(car varlist) ,value-form))
 	 ,@body)
       (let ((ignore (gensym)))
-	`(multiple-value-call #'(lambda (&optional ,@varlist &rest ,ignore)
+	`(multiple-value-call #'(lambda (&optional ,@(mapcar #'list varlist) &rest ,ignore)
 				  (declare (ignore ,ignore))
 				  ,@body)
 	   ,value-form))))