anchor.diff:    (let* ((too-close (remove-if (lambda (b)
                                    (let ((distance (p2dm:distance-between-vectors (entity-position b)
                                                                                   (entity-position boid))))
  -                                   (or (< distance p2dm:+epsilon+)
  +                                   (or (eq boid b)
                                          (> distance +min-boid-separation+))))
                                  all-boids))
            (too-close-cnt (length too-close)))
  
positive.code:                                                      (/ 1.0 too-close-cnt)))
                 (too-close-center-dist (p2dm:distance-between-vectors (entity-position boid)
                                                                       too-close-center))
                 (lr (linear-repulsion +min-boid-separation+ too-close-center-dist)))
            (static-priority (ddv (entity-position boid)
                                  (p2dm:scaled-vector (p2dm:subtract-vectors (entity-position boid)
                                                                             too-close-center)
  
negative.code: (defun linear-repulsion (radius distance)
    (float (clamp (/ (- radius distance) radius) 0 1)))
  
  (defun aggressive-repulsion (radius distance &optional (factor 10.0))
    ;; y = - 2^(-10(1-x)) + 1
    (let ((x (clamp (/ distance radius) 0 1)))
      (values (float (1+ (- (expt 2 (* (- factor) (- 1 x))))))
              (float x))))
  
  (defun make-default-boid-behaviours ()
    (list (lambda (boid world)                 ; cohesion
  