Index: linux-2.6.10-ck7/kernel/sched.c
===================================================================
--- linux-2.6.10-ck7.orig/kernel/sched.c	2005-03-01 21:38:46.000000000 +1100
+++ linux-2.6.10-ck7/kernel/sched.c	2005-03-01 21:38:46.000000000 +1100
@@ -529,13 +529,18 @@ static inline void __activate_idle_task(
  */
 static unsigned int burst(task_t *p)
 {
+	unsigned int burst = p->burst;
+
 	if (likely(!rt_task(p))) {
 		unsigned int task_user_prio = TASK_USER_PRIO(p);
-		if (iso_task(p))
-			task_user_prio /= 2;
-		return 39 - task_user_prio;
-	} else
-		return p->burst;
+		burst = 39 - task_user_prio;
+		if (iso_task(p)) {
+			burst <<= 1;
+			if (burst > 39)
+				burst = 39;
+		}
+	}
+	return burst;
 }
 
 static void inc_burst(task_t *p)
@@ -559,8 +564,11 @@ static unsigned int rr_interval(task_t *
 
 	if (nice < 0 && !rt_task(p))
 		rr_interval += -(nice);
-	else if (iso_task(p))
+	if (iso_task(p)) {
 		rr_interval = rr_interval / 2 ? : 1;
+		if (nice < 0)
+			rr_interval += -nice;
+	}
 	return rr_interval;
 }
 

