anchor.diff:        (let ((app (add-reflect-force (add-animation (add-target (add-reflection (add-tilt (what))))))))
   	(with-slots (camera timefactor) app
   	  ((@ camera position set) -4 -6 6)
  -	  (setf timefactor 10))
  +	  (setf timefactor 100))
   	app))
   
       (defun force ()
  -      (let ((app (add-animation (add-target (add-reflection (add-projection (add-tilt (what))))))))
  -	(with-slots (camera reflectv absorb-force-arrow reflect-arrow update-tilt incidence accelfn timefactor force-arrow normal init sail-position) app
  -	  ((@ camera position set) -4 -6 6)
  +      (let* ((app-absorb (add-target (absorb-force) :imax -10))
  +	     (accelfn-absorb (@ app-absorb accelfn))
  +	     (app (add-reflect-force (add-reflection app-absorb)))
  +	     (accelfn-reflect (@ app accelfn)))
  +	(with-slots (timefactor force-arrow accelfn update-tilt visibility init
  +				reflectv normal incidence sail-position) app
   	  (setf
  -	   timefactor 10
  -	   force-arrow (new (3fn *arrow-helper
  -				 (new (3fn *vector3 0 1 0))
  -				 (new (3fn *vector3 0 0 0))
  -				 20 0xff0000))
  +	   timefactor 100
  +	   force-arrow
  +	   (new (3fn *arrow-helper
  +		     (new (3fn *vector3 0 1 0))
  +		     (new (3fn *vector3 0 0 0))
  +		     20 0xff0000))
   	   accelfn
   	   (lambda ()
  -	     (let* ((accel (* 5d-5 (abs (cos (* incidence (/ pi 180))))))
  -		    (accel-a-v (new (3fn *vector3 0 accel 0)))
  -		    (accel-r-v ((@ ((@ ((@ reflectv clone)) set-length) accel) negate))))
  -	       ((@ ((@ accel-a-v clone)) add) accel-r-v)))
  +	     ((@ (funcall accelfn-absorb) add) (funcall accelfn-reflect)))
   	   update-tilt
   	   (let ((tilt-super ((@ app superior) "updateTilt")))
   	     (lambda ()
   	       (funcall tilt-super)
   	       ((@ force-arrow set-direction) normal)
  -	       ((@ force-arrow set-length) (* 20 (abs (expt (cos (* incidence (/ pi 180))) 2))))
  -	       ))
  +	       ((@ force-arrow set-length)
  +		(* 20 (abs (expt (cos (* incidence (/ pi 180))) 2))))))
  +	   visibility
  +	   (let ((vis-super ((@ app superior) "visibility")))
  +	     (lambda (bool)
  +	       (funcall vis-super bool)
  +	       (setf (@ force-arrow visible) bool)))
   	   init
   	   (let ((init-super ((@ app superior) "init")))
   	     (lambda ()
   	       (funcall init-super)
  -	       ((@ sail-position add) force-arrow)
  -	       ((@ sail-position add) absorb-force-arrow)
  -	       ((@ sail-position add) reflect-arrow)))
  -	   visibility
  -	   (let ((vis-super ((@ app superior) "visibility")))
  -	     (lambda (bool)
  -	       (funcall vis-super bool)
  -	       (setf (@ force-arrow visible) bool)))))
  +	       ((@ sail-position add) force-arrow)))
  +	   ))
   	app))
       ))
  
positive.code:       app)
  
      (defun add-absorb-force (app)
        (with-slots (accelfn incidence absorb-force-arrow sail init sail-position incident origin update-tilt absorbed) app
  	(setf
  	 absorb-force-arrow
  	 (new (3fn *arrow-helper incident origin 10 0xff0000))
  
negative.code:     (defun add-animation (app)
        (let ((elapsed 0)
  	    (time false))
  	(with-slots (timefactor pause toggle-pause init reset update-anim sail update-tilt render animate controls accelfn sail-position scene velocity-arrow) app
  	  (with-slots (position velocity) sail-position
  	    (setf
  	     ;; Sail position & velocity
  	     sail-position (new (3fn *object3-d))
  	     position (new (3fn *vector3 0 0 0))
  	     velocity (new (3fn *vector3 0 0 0))
  	     velocity-arrow (new (3fn *arrow-helper (incident) (origin) 0 0x0000ff))
  	     timefactor 10
  	     pause false
  	     toggle-pause
  