Index: /trunk/source/lib/macros.lisp
===================================================================
--- /trunk/source/lib/macros.lisp	(revision 15377)
+++ /trunk/source/lib/macros.lisp	(revision 15378)
@@ -573,5 +573,6 @@
                       (if local-p
                         (if (eq ftype :function)
-                                        ;Local function, so don't use global setf definitions.
+                          ;;Local function, so don't use global setf
+                          ;;definitions.
                           (default-setf form value env)
                           `(setf ,(macroexpand-1 form env) ,value))
@@ -596,4 +597,8 @@
                                 (accessor-structref-info-p temp)
                                 (not (refinfo-r/o (structref-info-refinfo temp))))
+                           (let* ((nargs (length (%cdar args))))
+                             (unless (eql nargs 1)
+                               (signal-simple-program-error
+                                "In ~s, structure accessor ~s requires exactly 1 argument but is being called with ~d arguments." `(setf ,@args) accessor nargs)))
                            (let ((form (defstruct-ref-transform temp (%cdar args) env t))
                                  (type (defstruct-type-for-typecheck (structref-info-type temp) env)))
@@ -602,4 +607,5 @@
                                ;; strip off type, but add in a typecheck
                                `(the ,type (setf ,form (typecheck ,value ,type))))))
+
                           (t
                            (multiple-value-bind (res win)
