I think we should always set agent_state->start = next when we've done a complete cycle.  We will frequently overshoot the cycle since we read the object hash space in chunks.  After a delay we'll be starting to process again at next, and so should get to next or beyond before declaring a new cycle complete.  If agent_setup() hapens to not be called for a while then agent_state->start could get to MAX and stay there which is fine.