anchor.diff:           ((values 4-years remaining-days) (floor remaining-days #.(years-to-days 4)))
            (years (min (floor remaining-days 365)
                        3)))
  -    (values (+ (* 400-years 400)
  -               (* 100-years 100)
  -               (* 4-years 4)
  -               years)
  -            (- remaining-days (* years 365)))))
  +        (values (+ (* 400-years 400)
  +                   (* 100-years 100)
  +                   (* 4-years 4)
  +                   years)
  +                (- remaining-days (* years 365)))))
   
   (defun %timestamp-decode-date (days)
     "Returns the year, month, and day, given the number of days from the epoch."
  
positive.code:                     old))
             (forms (list)))
        (%expand-adjust-timestamp-changes old changes
                                         (lambda (change)
                                           (push
                                            `(progn
                                               (multiple-value-bind (nsec sec day)
                                                   ,change
                                                 (setf (nsec-of ,new) nsec)
                                                 (setf (sec-of ,new) sec)
                                                 (setf (day-of ,new) day))
                                               ,@(when functional
                                                       `((setf ,old ,new))))
                                            forms)))
        (setf forms (nreverse forms))
        `(let* ((,old ,timestamp)
                ,@(when functional
  
negative.code:         (let ((timezone-transitions
                 ;; read transition times
                 (loop for idx from 1 upto transition-count
                    collect (%read-binary-integer inf 4 t)))
                ;; read local time indexes
                (timestamp-indexes
                 (loop for idx from 1 upto transition-count
                    collect (%read-binary-integer inf 1)))
                ;; read local time info
                (timestamp-info
                 (loop for idx from 1 upto type-count
                    collect (list (%read-binary-integer inf 4 t)
                                  (/= (%read-binary-integer inf 1) 0)
                                  (%read-binary-integer inf 1))))
                ;; read leap second info
                (leap-second-info
                 (loop for idx from 1 upto leap-count
                    collect (list (%read-binary-integer inf 4)
                                  (%read-binary-integer inf 4))))
                (abbreviation-buf (make-array abbrev-length :element-type '(unsigned-byte 8))))
            (read-sequence abbreviation-buf inf :start 0 :end abbrev-length)
            (let ((wall-indicators
                   ;; read standard/wall indicators
                   (loop for idx from 1 upto wall-indicator-count
                      collect (%read-binary-integer inf 1)))
                  ;; read UTC/local indicators
                  (local-indicators
                   (loop for idx from 1 upto utc-indicator-count
                      collect (%read-binary-integer inf 1))))
              (setf (timezone-transitions zone)
                    (nreverse
                     (mapcar
  