I've seen this happen once or twice today. In the DefaultScheduler, I've had two pools running (Mt. Red and Triplemining, today) with the slicing alternating between the two. However, Mt. Red lagged out and, as it should, BH switched over to Triplemining. Once Mt. Red was no longer lagging, however, it's slice count was reset, while Triplemining was still around 2000 or so. So, BH seems to want to stick with Mt. Red now until it 'catches' back up with Triplemining. Perhaps all slice timing should reset when a new server becomes available, even if it was from lagging out?
Great minds think alike: https://bitcointalk.org/index.php?topic=26866.msg439969#msg439969
Another issue I've just noticed with the slicing is that if a pool turns red for whatever reason, the slices are lost, so if you're in the middle of alternating between 2 or more pools, and one goes red, it drops out of the slice. Then when it gets picked up again it has to spend however long catching up to the other pools before they get hopped again.
Maybe try and tell it to remember the slice value it was last up to before it turned red, then add some sort of monitor so that when it's available again it resumes from where it was.
On that, it'd be really good to have a timer on api_disable as well that checks every so often if the pool API is back up. ozcoin must have had some issues earlier and by the time I got to it (a couple of hours) it was stuck on api_disable until I manually restarted it.