Index: linux-2.6.10-ckdev/kernel/sched.c
===================================================================
--- linux-2.6.10-ckdev.orig/kernel/sched.c	2005-01-10 15:44:48.224032376 +1100
+++ linux-2.6.10-ckdev/kernel/sched.c	2005-01-10 16:24:14.003379248 +1100
@@ -529,13 +529,18 @@
  */
 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 @@
 
 	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;
 }
 
