anchor.diff:         minutes
          seconds))))
   
  -(defun decode-timestamp (timestamp &key (timezone *default-timezone*))
  +(defun decode-timestamp (timestamp &key (timezone *default-timezone*) offset)
     "Returns the decoded time as multiple values: nsec, ss, mm, hh, day, month, year, day-of-week"
     (declare (type timestamp timestamp))
  -  (multiple-value-bind (offset daylight-p abbreviation)
  +  (when offset
  +    (setf timezone (the timezone +none-zone+)))
  +  (multiple-value-bind (offset* daylight-p abbreviation)
         (timestamp-subtimezone timestamp timezone)
         (multiple-value-bind (adjusted-secs adjusted-days)
  -          (%adjust-to-timezone timestamp timezone)
  +          (%adjust-to-timezone timestamp timezone offset)
           (multiple-value-bind (hours minutes seconds)
               (%timestamp-decode-time adjusted-secs)
             (multiple-value-bind (year month day)
  
positive.code:                              (integer -43199 43199)
                               boolean
                               string)) timestamp-subzone)
           (ftype (function (timestamp &key (:timezone timezone))
                            (values (integer 0 999999999)
                                    (integer 0 59)
                                    (integer 0 59)
  
negative.code:              (nsec-of timestamp)
               seconds minutes hours
               day month year
               (timestamp-day-of-week timestamp :timezone timezone :offset offset)
               daylight-p
               (or offset offset*)
               abbreviation))))))
  
  (defun timestamp-year (timestamp &key (timezone *default-timezone*))
  