anchor.diff:                  (<= (getf ball :y) (- +canvas-height+ (getf ball :radius)))))
            (make-ball ()
              (let* ((radius (random-range +min-radius+ +max-radius+))
  -                  (y (+ (random +canvas-height+) radius))
  +                  (color (random-color))
  +                  (y (+ (random +canvas-height+) radius (* .1 +canvas-height+)))
                     (dy (random-range (- +max-dy+) +max-dy+)))
                (list :time-step +time-step+
                      :radius radius
  
positive.code:   (incf (getf ball :y) (* (getf ball :dy) +time-step+))
    (when (< (getf ball :y) (getf ball :radius))
      (setf (getf ball :dy) (getf ball :max-speed))
      (setf (getf ball :y) (getf ball :radius))))
  
  (defun draw-ball (ball cr)
    (apply #'cairo-set-source-rgb (cons cr (getf ball :color)))
    (cairo-arc cr (getf ball :x) (- +canvas-height+ (getf ball :y))
               (getf ball :radius) 0 (* 2 pi))
    (cairo-fill cr)
  
negative.code:                    :dy dy
                     :max-speed (sqrt (* 2 (+ (abs (* +g-constant+ (- y radius)))
                                              (* 0.5 dy dy))))
                     :color color
                     :current-color color))))
      (do ((ball (make-ball) (make-ball)))
          ((in-bounds-p ball) ball))))
  
  