anchor.diff:             (type uint64 v))
     (loop do (let ((bits (ldb (byte 8 0) v)))
                (setf v (ash v -7))
  -             (setf (aref buffer index)
  -                   (logior bits (if (not (zerop v)) 128 0)))
  +             (setf (aref buffer index) (logior bits (if (not (zerop v)) 128 0)))
                (incf index))
  -        while (not (zerop v)))
  +        until (zerop v))
     index)
   
   (declaim (ftype (function (octet-vector vector-index vector-index uint64)
  
positive.code:            (type vector-index index limit))
    (multiple-value-bind (result new-index)
        (parse-uint64-carefully buffer index limit)
      (when (= (ldb (byte 1 63) result) 1) ; sign bit set, so value is negative
        (decf result (ash 1 64)))
      (values result new-index)))
  
  
negative.code:   (declare (type octet-vector buffer)
             (type vector-index index limit))
    (multiple-value-bind (result new-index)
        ;; XXXX: Call parse-uint32-carefully instead?
        (parse-int64-carefully buffer index limit)
      (when (or (>= result (ash 1 31)) (< result (- (ash 1 31))))
        (error 'value-out-of-range))
  