anchor.diff:      (assert-error 'type-error
   		  (setf (cddddr list) 1))))
   
  -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  -;;;
  -;;; Tests for the (setf first) function
  +(define-test |setf cddddr apply 1|
  +  (let ((list (copy-tree '((((0 . 0) . (0 . 0)) . ((0 . 0) . (0 . 0))) . 
  +			   (((0 . 0) . (0 . 0)) . ((0 . 0) . (0 . 0)))))))
  +    (assert-equal 1 (apply #'(setf cddddr) (list 1 list)))
  +    (assert-equal '((((0 . 0) . (0 . 0)) . ((0 . 0) . (0 . 0))) .
  +		    (((0 . 0) . (0 . 0)) . ((0 . 0) . (0 . 1))))
  +		  list)))
  +
  +(define-test |setf cddddr apply error 1|
  +  (let ((list 0))
  +    (assert-error 'type-error
  +		  (apply #'(setf cddddr) (list 1 list)))))
  +
  +(define-test |setf cddddr apply error 2|
  +  (let ((list (copy-tree '((((0 . 0) . (0 . 0)) . ((0 . 0) . (0 . 0))) . 
  +			   (((0 . 0) . (0 . 0)) . ((0 . 0) . (0 . 0)))))))
  +    (setf (cdr list) 0)
  +    (assert-error 'type-error
  +		  (apply #'(setf cddddr) (list 1 list)))))
  +
  +(define-test |setf cddddr apply error 3|
  +  (let ((list (copy-tree '((((0 . 0) . (0 . 0)) . ((0 . 0) . (0 . 0))) . 
  +			   (((0 . 0) . (0 . 0)) . ((0 . 0) . (0 . 0)))))))
  +    (setf (cddr list) 0)
  +    (assert-error 'type-error
  +		  (apply #'(setf cddddr) (list 1 list)))))
  +
  +(define-test |setf cddddr apply error 4|
  +  (let ((list (copy-tree '((((0 . 0) . (0 . 0)) . ((0 . 0) . (0 . 0))) . 
  +			   (((0 . 0) . (0 . 0)) . ((0 . 0) . (0 . 0)))))))
  +    (setf (cdddr list) 0)
  +    (assert-error 'type-error
  +		  (apply #'(setf cddddr) (list 1 list)))))
  +
  +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  +;;;
  +;;; Tests for the (setf first) function and setf expander
   
   (define-test setf.first.1
     (let ((list (copy-tree '(0 0 0 0 0 0 0 0 0 0))))
  
positive.code:     (assert-error 'type-error
  		  (setf (fifth list) 1))))
  
  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  ;;;
  ;;; Tests for the (setf sixth) function
  
  (define-test setf.sixth.1
    (let ((list (copy-tree '(0 0 0 0 0 0 0 0 0 0))))
  
negative.code:     (assert-error 'type-error
  		  (setf (cdddr list) 1))))
  
  (define-test |setf cdddr apply 1|
    (let ((list (copy-tree '((((0 . 0) . (0 . 0)) . ((0 . 0) . (0 . 0))) . 
  			   (((0 . 0) . (0 . 0)) . ((0 . 0) . (0 . 0)))))))
      (assert-equal 1 (apply #'(setf cdddr) (list 1 list)))
      (assert-equal '((((0 . 0) . (0 . 0)) . ((0 . 0) . (0 . 0))) .
  		    (((0 . 0) . (0 . 0)) . ((0 . 0) .        1)))
  		  list)))
  
  (define-test |setf cdddr apply error 1|
    (let ((list 0))
      (assert-error 'type-error
  		  (apply #'(setf cdddr) (list 1 list)))))
  
  (define-test |setf cdddr apply error 2|
    (let ((list (copy-tree '((((0 . 0) . (0 . 0)) . ((0 . 0) . (0 . 0))) . 
  			   (((0 . 0) . (0 . 0)) . ((0 . 0) . (0 . 0)))))))
      (setf (cdr list) 0)
      (assert-error 'type-error
  		  (apply #'(setf cdddr) (list 1 list)))))
  
  (define-test |setf cdddr apply error 3|
    (let ((list (copy-tree '((((0 . 0) . (0 . 0)) . ((0 . 0) . (0 . 0))) . 
  			   (((0 . 0) . (0 . 0)) . ((0 . 0) . (0 . 0)))))))
      (setf (cddr list) 0)
      (assert-error 'type-error
  		  (apply #'(setf cdddr) (list 1 list)))))
  
  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  ;;;
  ;;; Tests for the (setf caaaar) function and setf expander
  
  (define-test |setf caaaar 1|
    (let ((list (copy-tree '((((0 . 0) . (0 . 0)) . ((0 . 0) . (0 . 0))) . 
  