Suggestions noted, and as for the way the users were promoted previously; the were promoted by this formula:
time = time - (warning * penalty )
time > (interval * (#goups_to_promote - (#groups_to_promote + 1)))
I'm too tired to think too much right now, but I'm pretty sure that's how it's coded.