(define gl-loop
  (lambda (time delta-t)
    (let ((late-by (- (now) time))
          (next-frame-time (+ time (* *second* delta-t))))
      (if (> late-by 0)
          (print "Late by " (* 1.0 (/ late-by *second*)) "seconds\n")
          (begin
            (gl_render)))
      (callback (* 0.9 next-frame-time)
                'gl-loop
                next-frame-time
                delta-t))))