anchor.diff:  
   (defun bounce-main ()
     (within-main-loop
  -   (let ((runningp nil)
  +   (let ((runningp t)
            (balls (loop repeat +num-balls+ collect (make-ball)))
            (window (make-instance 'gtk-window
                                   :type :toplevel
  
positive.code:                                 :width-request +canvas-width+
                                  :height-request +canvas-height+))
           (box (gtk-box-new :vertical 2))
           (run-button (gtk-button-new-with-label "Start"))
           (add-button (gtk-button-new-with-label "Add")))
       (labels ((update (&optional widget)
                  (declare (ignore widget))
                  (dolist (ball balls) (update-ball ball))
                  (gtk-widget-queue-draw canvas)
                  t))
         (g-signal-connect window "destroy" (lambda (widget)
                                              (declare (ignore widget))
                                              (leave-gtk-main)))
         (g-signal-connect run-button "clicked"
                           (lambda (widget)
                             (declare (ignore widget))
                             (g-timeout-add (floor (* 1000 +time-step+))
                                            #'update)))
         (g-signal-connect add-button "clicked"
                           (lambda (widget)
                             (declare (ignore widget))
  
negative.code:                              t)))
         (gtk-container-add window box)
         (gtk-box-pack-start box canvas)
         (gtk-box-pack-start box start-button)
         (gtk-box-pack-start box stop-button)
         (gtk-box-pack-start box add-button)
         (gtk-widget-show-all window)
         (start-animation)))))
  