diff --git a/src/uncategorized/saTakeClasses.tw b/src/uncategorized/saTakeClasses.tw
index 8206fd69a0bcc55644714be02a578c27ffba08fb..10c5ab07135e547307e0e914774dc69d6867cec0 100644
--- a/src/uncategorized/saTakeClasses.tw
+++ b/src/uncategorized/saTakeClasses.tw
@@ -76,22 +76,21 @@
 	<<if (random(1,100) < 50)>>
 		<<set _learning += 1>>
 	<</if>>
-<<elseif ($schoolroomUpgradeRemedial == 1)>>
-	<<if (random(1,100) < 50)>>
-		<<set _learning += 1>>
+<<else>>
+	<<set _seed = 50 + $slaves[$i].intelligence*20>>
+	<<if ($schoolroomUpgradeRemedial == 1) && random(1,100) < 50>>
+		<<set _seed = 50>>
 	<</if>>
-<<elseif ($slaves[$i].intelligence >= -1)>>
-	$pronounCap is of below average intelligence
-	<<if (random(1,100) < 30)>>
+	<<if (random(1,100) < _seed)>>
 		<<set _learning += 1>>
 	<</if>>
-<<elseif ($slaves[$i].intelligence >= -2)>>
-	$pronounCap is quite stupid
-	<<if (random(1,100) < 10)>>
-		<<set _learning += 1>>
+	<<if ($slaves[$i].intelligence >= -1)>>
+		$pronounCap is of below average intelligence
+	<<elseif ($slaves[$i].intelligence >= -2)>>
+		$pronounCap is quite stupid
+	<<else>>
+		$pronounCap is an imbecile,
 	<</if>>
-<<else>>
-	$pronounCap is an imbecile,
 <</if>>
 
 <<if ($slaves[$i].devotion > 95)>>