anchor.diff:            (dolist (ranklen (distribute-ranks-evenly item-count))
               (dolist (itempos (spread-rank ranklen))
                 (collect
  +                  ;;(list (+ (funcall xpos itempos)
  +                  ;;         (* rankcount (lisp *rank-overlap*)))
  +                  ;;      itempos)))
                     (random-wiggle (+ (funcall xpos itempos)
  -                                    (* rankcount (lisp *rank-overlap*)))
  +                                  (* rankcount (lisp *rank-overlap*)))
                                    itempos)))
               (incf rankcount)))))
   
  
positive.code: (in-package :wf/web)
  
  (defparameter *preferred-space* 1.5)
  (defparameter *minimum-space* 1)
  (defparameter *unit-string* "em")
  (defparameter *opin-box-height* 20)
  (defparameter *opin-box-width* 10)
  (defparameter *placement-randomness* 0.45)
  (defparameter *rank-overlap* 2)
  (defparameter *sway-factor* (- 4))
  
  
negative.code:             (collect (1+ ranksize))))))
  
      (defun spread-rank (number)
        (let* ((space (if (< (lisp *opin-box-height*)
                             (* number (lisp *preferred-space*)))
                          (lisp *preferred-space*)
                          (lisp *minimum-space*)))
  