Cause: Time til next level relied on xp per hour being divided by 3600 (seconds in an hour). For XP rates under 3600 per hour, this would result in a divide by zero. Solution: Use floats and rely on an xp per second implementation that works on seconds instead of hours. It appears to work as expected. 