anchor.diff:  	   ,(if use-values-p
   		;; surely this could be simpler!
   		`(let ((gvalues (next-value "values-")))
  -		   `((let ((,gvalues ,,(if accept-multiple-forms-p 
  +		   `((let ((,gvalues ,,(if accept-multiple-forms-p
   					   `value-form
   					   `(first value-form))))
   		       (declare (ignorable ,gvalues))
  
positive.code: 			       `(funcall (lambda (variables values) ,@body)
  					 variable-form gvalues))
  					;		 ,@(when ,gignores `((declare (ignore ,@gignores))))
  			   ,@(bind-filter-declarations 
  			      declarations variable-form)
  			   ,@(bind-macro-helper 
  			      remaining-bindings declarations body)))))
  		``((,@,(if (symbolp (first body))
  			   `(,(first body) variable-form ,(if accept-multiple-forms-p
  
negative.code: 							`value-form
  							`(first value-form))))
  		       ,@(bind-filter-declarations declarations variable-form)
  		       ,@(bind-macro-helper
  			  remaining-bindings declarations body)))))
  	 ,@(when multiple-names?
  		 (loop for name in name/s collect
  		      `(defmethod bind-generate-bindings
  			   ((kind (eql ,name))
  			    variable-form value-form body declarations
  			    remaining-bindings)
  			 (,main-method-name
  			  variable-form value-form body declarations
  			  remaining-bindings))))
  	 #+(or)
  	 ,@(when multiple-names?
  		 (loop for name in name/s collect
  		      `(defmethod bind-generate-bindings
  			   ((kind (eql ,name))
  			    variable-form value-form body declarations
  			    remaining-bindings)
  			 (,main-method-name
  			  variable-form
  			  ,(if accept-multiple-forms-p `value-form `(first value-form))
  			  body declarations
  			  remaining-bindings))))
  	 ))))
  
  