anchor.diff:    (finish-output *trace-output*)
     (let* ((n 100)
            (list (loop repeat n collect (make-random-rectangle)))
  -         (tree (make-spatial-tree :r :rectfun #'identity)))
  +         (tree (make-spatial-tree kind :rectfun #'identity)))
       (dolist (r list)
         (insert r tree))
       (dolist (r (cdr list))
         (delete r tree))
  -    (unless (= (length (search (car list) tree)) 1)
  -      (error "aargh: wrong amount of stuff in ~S" tree)))
  +    (let* ((results (search (car list) tree))
  +           (length (length results)))
  +      (unless (= (length results) 1)
  +        (error "aargh: wrong amount of stuff (~D entries) in ~S"
  +               length tree))))
     (format *trace-output* " passed.~%"))
positive.code:          (list (loop repeat n collect (make-random-rectangle)
                       collect (make-random-rectangle -2.0 -2.0)
                       collect (make-random-rectangle 2.0 2.0)))
           (tree (make-spatial-tree :r :rectfun #'identity)))
      (dolist (r list)
        (insert r tree))
      (let ((r (make-rectangle :lows '(0.0 0.0) :highs '(1.0 1.0))))
  
negative.code:                      for r = (make-random-rectangle)
                       collect (cons (lows r) (highs r))))
           (rectfun (lambda (x) (make-rectangle :lows (car x) :highs (cdr x))))
           (tree (make-spatial-tree kind :rectfun rectfun)))
      (dolist (r list)
        (insert r tree))
      (let* ((r (make-random-rectangle))
  