anchor.diff:                                                  :name "anonymous"
                                                   :loaded t)))))
                           *default-timezone*)))
  -      (unless (typep second 'integer)
  -        ;; TODO extract usec
  -        )
         (unless second (setf second 0))
         (unless minute (setf minute 0))
         (unless hour (setf hour 0))
  
positive.code:                  (time-minute (start-end)
                     (parse-integer-into start-end minute 0 59))
                   (time-second (start-end)
                     (let* ((*read-eval* nil)
                            (start (car start-end))
                            (end (cdr start-end))
                            (float (read-from-string (substitute #\, #\. time-string :start start :end end)
                                                     t nil :start start :end end)))
                       (passert (typep float '(or float integer)))
                       (setf second float)))
                   (time-offset (start-end sign)
                     (with-parts-and-count ((car start-end) (cdr start-end) time-separator)
                       (passert (or allow-missing-timezone-part-p (= count 2)))
  
negative.code:                                       (allow-missing-date-part-p allow-missing-elements-p)
                                        (allow-missing-time-part-p allow-missing-elements-p)
                                        (allow-missing-timezone-part-p allow-missing-elements-p))
    "Based on http://www.ietf.org/rfc/rfc3339.txt including the function names used. Returns (values year month day hour minute second usec offset-hour offset-minute). If the parsing fails, then either signals an error or returns nil based on FAIL-ON-ERROR."
    (declare (type character date-time-separator time-separator date-separator)
             (type (simple-array character) time-string)
             (optimize (speed 3)))
    (the list
      (let (year month day hour minute second usec offset-hour offset-minute)
        (declare (type (or null fixnum) start end year month day hour minute second usec offset-hour offset-minute))
        (macrolet ((passert (expression)
                     `(unless ,expression
                       (parse-error)))
  