anchor.diff:          (+ heading (random .3) -0.15))))
   
   (defun make-avoid (self friend)
  -  (let ((heading (- (bearing self friend))))
  +  (let ((heading (+ pi (bearing self friend))))
       #'(lambda ()
           (+ heading (random .3) -0.15))))
   
  
positive.code:   (cairo-stroke cr)
    (draw-label cr actor))
  
  (defmethod draw :after (cr (actor mover))
    (cairo-set-source-rgb cr 0.0 0.0 1.0)
    (cairo-set-line-width cr 3.0)
    (cairo-move-to cr (x actor) (- +drawing-area-height+ (y actor)))
    (let ((lead-length 12))
  
negative.code:          (nearest (car (sort others #'< :key (lambda (x) (distance x sheep)))))
           (dist (distance nearest sheep))
           (new-status (cond
                             ((> dist 200) :isolated)
                             ((> dist 60) :lonely)
                             ((< dist 20) :crowded)
                             (t :content))))
      (unless (and (eq new-status (status sheep))
                   (or (eq (status sheep) :content)
                       (eq (status sheep) :isolated)))
        (setf (status sheep) new-status)
        (ecase (status sheep)
          (:isolated
           (progn
             (setf (motivation sheep) .2)
             (setf (direction-fn sheep) (make-meander (heading sheep)))
             ))
          (:lonely
           (progn
             (setf (motivation sheep) .4)
             (setf (direction-fn sheep) (make-seek sheep nearest))
             ))
          (:crowded
           (progn
             (setf (motivation sheep) .5)
             (setf (direction-fn sheep) (make-avoid sheep nearest))
             ))
          (:content
           (progn
             (setf (motivation sheep) .1)
             (setf (direction-fn sheep) (make-meander (heading sheep)))
             ))))    
      (setf (motivation sheep) (cond 
                                 ((eq (status sheep) :isolated) .2)
                                 ((eq (status sheep) :lonely) .4)
                                 ((eq (status sheep) :crowded) .3)
                                 ((eq (status sheep) :content) .1))))
    (call-next-method))
  
  (defmethod draw :around (cr object)
    (when cr (call-next-method)))
  
  (defmethod draw (cr (actor actor))
    (cairo-set-source-rgb cr 0.8 0.4 0.2)
    (cairo-arc cr (x actor) (- +drawing-area-height+ (y actor)) 5 0 (* 2 pi))
    (cairo-fill cr)
  