I found a relavant LKML thread the other day, but couldn't today. From memory, it's not that simple. There seems to be other 'priorities' that the scheduler sorts out as well as the nice levels and some things, like i/o, that cause priority shifts. The problem seems to be shifting something too far and that pins some process so far over they get too much scheduler time.
I found a suggestion it might be fixed in 2.6.33.
Wade.