diff --git a/game/04-Variables/variables-versionUpdate.twee b/game/04-Variables/variables-versionUpdate.twee
index ca5dca8a2f4a429dfe662c01d0f8f963acd69b0d..17ff0792e0a29e8d488cd661f94b66565de8ae61 100644
--- a/game/04-Variables/variables-versionUpdate.twee
+++ b/game/04-Variables/variables-versionUpdate.twee
@@ -4231,6 +4231,25 @@
 		<<unset $adultShopWhitney>>
 	<</if>>
 
+	<!-- 
+	v0.4.0.6 change (87f8e633085bb4be8f4f0d099012b1e0b077242a) that I've moved up here.
+	the reason is - this variable is used in the edge-case handled below 
+	  (the <<pass _passMinutes>> macro that the v0.4 Time refactor sometimes calls ends up reading schoolLessonsMissed.science, 
+	  which obviously breaks if this initialization doesn't happen at this point.
+	
+	If you add any calls to <<pass>> before this line in backComp - it will also break 
+	  for any players whose save doesn't have the schoolLessonsMissed paramm yet.
+	-->
+	<<if $sciencemissed isnot undefined>>
+		<<set $schoolLessonsMissed to { science: $sciencemissed, maths: $mathsmissed, english: $englishmissed, history: $historymissed, swimming: $swimmingmissed }>>
+		<<unset $sciencemissed>>
+		<<unset $mathsmissed>>
+		<<unset $englishmissed>>
+		<<unset $historymissed>>
+		<<unset $swimmingmissed>>
+	<</if>>
+
+
 	<!-- v0.4 Time refactor -->
 	<<if $time isnot undefined and !$timeStamp>>
 		<<script>>
@@ -4362,15 +4381,6 @@
 		<</script>>
 	<</if>>
 
-	<<if $sciencemissed isnot undefined>>
-		<<set $schoolLessonsMissed to { science: $sciencemissed, maths: $mathsmissed, english: $englishmissed, history: $historymissed, swimming: $swimmingmissed }>>
-		<<unset $sciencemissed>>
-		<<unset $mathsmissed>>
-		<<unset $englishmissed>>
-		<<unset $historymissed>>
-		<<unset $swimmingmissed>>
-	<</if>>
-
 	<!-- V0.4.0.5 repair transformationParts object after damage from mid-prayer room or nightmare saves -->
 	<<if $transformationParts.fox is undefined and $tfFIX is undefined>>
 		<<set $tfFIX to 1>>