;; Time is ignored, as is DST info (define (subtract-days time days) (let* ((mday (vector-ref time 3)) (month (vector-ref time 4)) (year (vector-ref time 5)) (wday (vector-ref time 6)) (yday (vector-ref time 7))) (if (< days mday) (vector 0 0 0 (- mday days) month year (modulo (- wday days) 7) (- yday days) #t 0) (let* ((remaining-days (- days mday)) (year (if (= month 0) (sub1 year) year)) (yday (if (= month 0) (if (leap-year? (+ year 1900)) 365 364) (- yday mday))) (month (if (= month 0) 11 (sub1 month))) (wday (modulo (- wday mday) 7)) (mday (days-in-month month (+ year 1900)))) (subtract-days (vector 0 0 0 mday month year wday yday #t 0) remaining-days)))))