'Update self.next_time with the assumption func was just called.
Returns: A modified job object.'

def next(self):

    last_time = self.next_time
    current_time = time.time()
    delta = ((last_time + self.interval) - current_time)
    if (last_time > (current_time + self.interval)):
        self.next_time = (current_time + self.interval)
    elif ((delta < 0) and (abs(delta) > (self.interval * self.max_catchup))):
        self.next_time = (current_time - (self.interval * self.max_catchup))
    else:
        self.next_time = (last_time + self.interval)
    return self
