diff --git a/juno_samples/rodinia/cfd/src/euler.jn b/juno_samples/rodinia/cfd/src/euler.jn
index 5645823afa6ab8b3da6ebddd184509a93b98a201..984d5a938c6128f6f1bb7ab22a9c6ac3ff71d952 100644
--- a/juno_samples/rodinia/cfd/src/euler.jn
+++ b/juno_samples/rodinia/cfd/src/euler.jn
@@ -231,11 +231,10 @@ const RK : usize = 3;
 fn time_step<nelr: usize>(
   j: usize,
   old_variables: Variables::<nelr>,
+  variables: Variables::<nelr>,
   step_factors: f32[nelr],
   fluxes: Variables::<nelr>,
 ) -> Variables::<nelr> {
-  let variables : Variables::<nelr>;
-
   for i = 0 to nelr {
     let factor = step_factors[i] / (RK + 1 - j) as f32;
 
@@ -245,7 +244,7 @@ fn time_step<nelr: usize>(
     variables.momentum.z[i] = old_variables.momentum.z[i] + factor * fluxes.momentum.z[i];
     variables.energy[i]     = old_variables.energy[i]     + factor * fluxes.energy[i];
   }
-  
+
   return variables;
 }
 
@@ -286,7 +285,7 @@ fn euler<nelr: usize>(
                                         ff_flux_contribution_momentum_x,
                                         ff_flux_contribution_momentum_y,
                                         ff_flux_contribution_momentum_z);
-      variables = time_step::<nelr>(j, old_variables, step_factors, fluxes);
+      variables = time_step::<nelr>(j, old_variables, variables, step_factors, fluxes);
     }
   }
 
diff --git a/juno_samples/rodinia/cfd/src/main.rs b/juno_samples/rodinia/cfd/src/main.rs
index 0f2ae3b8c233c93792835c831b4ee9f06de2540e..2251548f433cdf9f28babeb694b45d2b23a52ae1 100644
--- a/juno_samples/rodinia/cfd/src/main.rs
+++ b/juno_samples/rodinia/cfd/src/main.rs
@@ -34,7 +34,7 @@ fn run_euler(
     ff_fc_momentum_y: &Float3,
     ff_fc_momentum_z: &Float3,
 ) -> Vec<f32> {
-    let variables = HerculesImmBox::from(variables.as_slice());
+    let mut variables = HerculesMutBox::from(variables);
     let areas = HerculesImmBox::from(areas);
     let elements_surrounding_elements = HerculesImmBox::from(elements_surrounding_elements);
     let normals = HerculesImmBox::from(normals);
@@ -87,7 +87,7 @@ fn run_pre_euler(
     ff_fc_momentum_y: &Float3,
     ff_fc_momentum_z: &Float3,
 ) -> Vec<f32> {
-    let variables = HerculesImmBox::from(variables.as_slice());
+    let mut variables = HerculesMutBox::from(variables);
     let areas = HerculesImmBox::from(areas);
     let elements_surrounding_elements = HerculesImmBox::from(elements_surrounding_elements);
     let normals = HerculesImmBox::from(normals);
@@ -223,6 +223,14 @@ fn cfd_harness(args: CFDInputs) {
         };
 
     if !compare_floats(&res_juno, &res_rust) {
+        let len = res_juno.len();
+        let diff = res_juno
+            .into_iter()
+            .zip(res_rust.into_iter())
+            .enumerate()
+            .filter(|(_, (x, y))| !compare_float(*x, *y))
+            .collect::<Vec<_>>();
+        println!("Diff at {} of {}", diff.len(), len);
         panic!("Mismatch in results");
     }
 }
diff --git a/juno_samples/rodinia/cfd/src/pre_euler.jn b/juno_samples/rodinia/cfd/src/pre_euler.jn
index d5499c9653b30ca310f82b1217ed0c581a5496c9..22f40b57073cc5da4903040459a8bd4afcf4d77b 100644
--- a/juno_samples/rodinia/cfd/src/pre_euler.jn
+++ b/juno_samples/rodinia/cfd/src/pre_euler.jn
@@ -310,21 +310,20 @@ const RK : usize = 3;
 fn time_step<nelr: usize>(
   j: usize,
   old_variables: Variables::<nelr>,
+  variables: Variables::<nelr>,
   step_factors: f32[nelr],
   fluxes: Variables::<nelr>,
 ) -> Variables::<nelr> {
-  let variables : Variables::<nelr>;
-
   for i = 0 to nelr {
     let factor = step_factors[i] / (RK + 1 - j) as f32;
 
     variables.density[i]    = old_variables.density[i]    + factor * fluxes.density[i];
-    variables.energy[i]     = old_variables.energy[i]     + factor * fluxes.energy[i];
     variables.momentum.x[i] = old_variables.momentum.x[i] + factor * fluxes.momentum.x[i];
     variables.momentum.y[i] = old_variables.momentum.y[i] + factor * fluxes.momentum.y[i];
     variables.momentum.z[i] = old_variables.momentum.z[i] + factor * fluxes.momentum.z[i];
+    variables.energy[i]     = old_variables.energy[i]     + factor * fluxes.energy[i];
   }
-  
+
   return variables;
 }
 
@@ -367,7 +366,7 @@ fn pre_euler<nelr: usize>(
                                         fc_momentum_y, fc_momentum_z, fc_density_energy,
                                         ff_fc_density_energy, ff_fc_momentum_x,
                                         ff_fc_momentum_y, ff_fc_momentum_z);
-      variables = time_step::<nelr>(j, old_variables, step_factors, fluxes);
+      variables = time_step::<nelr>(j, old_variables, variables, step_factors, fluxes);
     }
   }