diff -Nurp linux-2.6.22-200/kernel/vserver/sched.c linux-2.6.22-210/kernel/vserver/sched.c
---- linux-2.6.22-200/kernel/vserver/sched.c 2008-03-20 17:15:35.000000000 -0400
-+++ linux-2.6.22-210/kernel/vserver/sched.c 2008-03-31 17:55:55.000000000 -0400
+--- linux-2.6.22-200/kernel/vserver/sched.c 2008-03-31 17:57:47.000000000 -0400
++++ linux-2.6.22-210/kernel/vserver/sched.c 2008-03-31 18:22:46.000000000 -0400
@@ -91,7 +91,7 @@ int vx_tokens_recalc(struct _vx_sched_pc
vxd_check_range(delta_min[0], 0, sched_pc->interval[0]);
#endif
if (!sched_pc->fill_rate[1])
delta_min[1] = HZ;
- else if (tokens > sched_pc->fill_rate[1])
-+ else if (tokens > sched_pc->fill_rate[1]) {
- delta_min[1] += sched_pc->interval[1] *
+- delta_min[1] += sched_pc->interval[1] *
- tokens / sched_pc->fill_rate[1];
- else
-+ tokens / sched_pc->fill_rate[1] - delta_min[1];
++ else if (tokens > sched_pc->fill_rate[1]) {
++ delta_min[1] = sched_pc->interval[1] *
++ (tokens / sched_pc->fill_rate[1]) - delta_min[1];
+ if (tokens % sched_pc->fill_rate[1])
+ delta_min[1] += sched_pc->interval[1];
+ } else