anchor.diff:  	((@ app camera position set) -4 -6 6)
   	app))
   
  -    (defun add-mirror (app)
  -      (with-slots (sail mirror) app
  -	(setf mirror (mirror))
  -	((@ sail add) mirror))
  -      app)
  -
  -    (defun add-corners (app)
  -      (with-slots (sail corners mirror) app
  -	(setf corners (corners mirror))
  -	app))
  -    
       (defun add-reflection (app)
         "Add a box showing the reflected sunlight"
         (with-slots (absorbed normal incident reflectv reflection reflect-arrow mirror corners reflect-arrow tilt-update-fn origin scene visibility) app
  
positive.code: 	)
        app)
  
      (defun add-projection (app)
        "Add projection of absorbed light"
        (with-slots (mirror corners projection incident absorb-arrow visibility tilt-update-fn origin scene sail absorbed) app
  	(setf
  	 mirror (mirror)
  	 corners (corners mirror)
  	 projection (projection corners)
  
negative.code:       "Reflected light on a sail app"
        (add-target (add-reflection (absorb))))
  
      (defun add-animation (app)
        (with-slots (toggle-pause pause) app
  	(setf
  	 pause false
  	 toggle-pause
  	 (lambda (e)
  	   (let ((pause-html ($ "#pause")))
  	     (if pause
  		 (progn
  		   (setf pause false)
  		   (setf (@ pause-html 0 inner-h-t-m-l) "Pause"))
  		 (progn
  		   (setf pause t)
  		   (setf (@ pause-html 0 inner-h-t-m-l) "Continue")))))))
        app)
      
      (defun absorb-force ()
        (let ((app (add-animation (absorb)))
  	    (vel 0)
  	    (pos 0)
  	    (elapsed 0)
  	    (timefactor 10)
  	    (time false))
  	(with-slots (sail pause scene mirror corners projection absorb-arrow controls render toggle-pause update animate init incidence update-tilt) app
  	  (setf
  	   update
  	   (lambda ()
  	     (let* ((accel (* 5d-5 (abs (cos (* incidence (/ pi 180))))))
  