リストのなかの最大値を探すのはこれでいいの?

(define (max-value lst)
 (do ((max-v 0)
    (cur-v 0))
   ((null? lst) max-v)
  (set! cur-v (car lst))
  (if (and (number? cur-v) (> cur-v max-v))
    (set! max-v cur-v))
  (set! lst (cdr lst))))