Well, one simple solution would just be to call the next subroutine from within the previous instead of the original. In other words, 1 calls 2, 2 calls 3, 3 calls 4, etc. That way, if the original calls 3, it will get 3 and 4 but not 1 and 2.
-- Jeff