(define (julian year month day)
  (let* ((a (quotient (- 14 month) 12))
         (y (+ year 4800 (- a)))
         (m (+ month (* 12 a) -3)))
    (+ day
       (quotient (+ (* 153 m) 2) 5)
       (* 365 y)
       (quotient y 4)
       (- (quotient y 100))
       (quotient y 400)
       (- 32045))))

(define (fri13-ten year month)
  (let loop ((m (if (= month 12) 1 (+ month 1)))
             (y (if (= month 12) (+ year 1) year))
             (n 0) (k 120))
    (if (zero? k) n
      (loop (if (= m 12) 1 (+ m 1))
            (if (= m 12) (+ y 1) y)
            (if (= (modulo (julian y m 13) 7) 4) (+ n 1) n)
            (- k 1)))))

(display (fri13-ten 2009 3))
