anchor.diff:    (loop for free-rect in free-rects appending (subdivide-rect free-rect rect)))
   
   (defun containsp (outer inner)
  -  (with-rect (x0 y0 w0 h0) outer
  -    (with-rect (x1 y1 w1 h1) inner
  +  (%with-rect (x0 y0 w0 h0) outer
  +    (%with-rect (x1 y1 w1 h1) inner
         (and (>= (+ x0 w0) (+ x1 w1) x1 x0)
              (>= (+ y0 h0) (+ y1 h1) y1 y0)))))
   
  
positive.code:                          min-rect))))
  
  (defun intersectsp (r0 r1)
    (with-rect (x0 y0 w0 h0) r0
      (with-rect (x1 y1 w1 h1) r1
        (and (< x0 (+ x1 w1))
             (> (+ x0 w0) x1)
             (< y0 (+ y1 h1))
  
negative.code: 
  (defun subdivide-rect (rect placed)
    (if (intersectsp placed rect)
        (%with-rect (x y w h) rect
          (%with-rect (xp yp wp hp) placed
            (let (result)
              ;; left part
              (when (splitsp xp x (+ x w))
  