code: def __mod_distance(self, value, byxxx, base):
          
          accumulator = 0
          for ii in range(1, base + 1):
              # Using divmod() over % to account for negative intervals
              div, value = divmod(value + self._interval, base)
              accumulator += div
              if value in byxxx:
                  return (accumulator, value)
docs: Calculates the next value in a sequence where the `FREQ` parameter is
          specified along with a `BYXXX` parameter at the same "level"
          (e.g. `HOURLY` specified with `BYHOUR`).
  
          :param value:
              The old value of the component.
          :param byxxx:
              The `BYXXX` set, which should have been generated by
              `rrule._construct_byset`, or something else which checks that a
              valid rule is present.
          :param base:
              The largest allowable value for the specified frequency (e.g.
              24 hours, 60 minutes).
  
          If a valid value is not found after `base` iterations (the maximum
          number before the sequence would start to repeat), this raises a
          :exception:`ValueError`, as no valid values were found.
  
          This returns a tuple of `divmod(n*interval, base)`, where `n` is the
          smallest number of `interval` repetitions until the next specified
          value in `byxxx` is found.