anchor.diff:  |#
   
   (defun main (&key (gpu t) (interop nil))
  -  (let ((glut:*run-main-loop-after-display* nil)
  +  (let ((dev-id 0)
  +        (glut:*run-main-loop-after-display* nil)
           (window (make-instance 'nbody-window)))
  -    (glut:display-window window) ; GLUT window must be created before initializing nbody-demo
  -    (with-nbody-demo (demo 2048 :gpu gpu :interop interop)
  -      (setf (slot-value window 'nbody-demo) demo)
  -      (glut:main-loop))))
  +    (glut:display-window window) ; GLUT window must be created before initializing CUDA
  +    (with-cuda (dev-id :interop interop)
  +      (with-framerate-counter (counter)
  +        (with-nbody-demo (demo 2048 :gpu gpu :interop interop)
  +          (setf (slot-value window 'nbody-demo) demo
  +                (slot-value window 'counter) counter)
  +          (glut:main-loop))))))
  
positive.code:   ;; Flip position arrays
    (symbol-macrolet ((new-pos (body-system-new-pos system))
                      (old-pos (body-system-old-pos system)))
      (rotatef new-pos old-pos))
    ;; Measure framerate
    (body-system-measure-framerate system))
  
  (defun body-system-measure-framerate (system)
    (measure-framerate-counter (body-system-framerate-counter system)))
  
  (defun body-system-fps (system)
    (framerate-counter-fps (body-system-framerate-counter system)))
  
  
  ;;;
  
negative.code: (defun nbody-demo-num-bodies (demo)
    (body-system-num-bodies (nbody-demo-system demo)))
  
  
  ;;;
  ;;; Body System
  ;;;
  
  (defstruct (body-system (:constructor %make-body-system))
    ;; Memory blocks
    (new-pos :new-pos)                    ; Not read-only to flip
    (old-pos :old-pos)
    (vel :vel :read-only t)
    ;; Flags
    (gpu :gpu :read-only t)
    (interop :interop :read-only t)
  