anchor.diff:  
       (defun add-tilt (app)
         "Add tilt controls"
  -      (with-slots (camera sail update-tilt tilt-update-fn rotation incidence absorbed up down left right render) app
  +      (with-slots (camera sail update-tilt rotation incidence absorbed up down left right render) app
   	;; Set new slots
   	(setf
   	 rotation 0 incidence 0 absorbed 100
  -	 tilt-update-fn
  +	 update-tilt
   	 (lambda ()
   	   ;; Sail rotation matrix
   	   ((@ sail update-matrix-world))
  
positive.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))))))
  		    (now ((@ (new (*date)) get-time)))
  		    (dt (/ (* timefactor (- now (or time now))) 1000)))
  	       (setf time now)
  	       (incf elapsed dt)
  	       (incf vel (* dt accel))
  	       (incf pos (* dt vel))
  	       (setf (@ sail position y) pos)
  	       (setf (@ ($ "#accel") 0 inner-h-t-m-l) ((@ ((@ *math floor10) (* accel 1000) -4) to-string)))
  	       (setf (@ ($ "#speed") 0 inner-h-t-m-l) ((@ ((@ *math floor10) (* vel 1000) -2) to-string)))
  	       (setf (@ ($ "#distance") 0 inner-h-t-m-l) ((@ ((@ *math floor10) pos -3) to-string)))
  	       (let* ((minutes (floor (/ elapsed 60)))
  		      (seconds (floor (- elapsed (* minutes 60)))))
  		 (setf (@ ($ "#elapsed") 0 inner-h-t-m-l)
  		       (+ ((@ minutes to-string)) (if (> seconds 9) ":" ":0") ((@ seconds to-fixed))))))
  	     ;; Move absorbed arrow
  	     ((@ absorb-arrow position copy) (@ sail position))
  	     ;; Update projection
  	     ((@ scene remove) projection)
  	     (setf projection (projection corners))
  	     ((@ scene add) projection))
  	   animate
  	   (lambda ()
  	     (request-animation-frame animate)
  	     (unless pause
  	       (when (> pos 100)
  		 (funcall reset))
  	       (funcall update))
  	     (when pause (setf time false))
  	     ((@ controls update))
  	     (funcall update-tilt))
  	   reset (lambda () (setf pos 0 vel 0 elapsed 0))
  	   init
  	   (let ((init-super ((@ app superior) "init")))
  	     (lambda ()
  
negative.code:     
      (defun add-projection (app)
        "Add projection of absorbed light"
        (with-slots (mirror corners projection incident absorb-arrow visibility update-tilt origin scene sail absorbed) app
  	(setf
  	 app (add-corners (add-mirror app))
  	 mirror (mirror)
  