Set::IntSpan should do everything you need.
In reply to Re^5: modeling overlapping generations by BrowserUk in thread modeling overlapping generations by punkish