diff --git a/hercules_opt/src/fork_transforms.rs b/hercules_opt/src/fork_transforms.rs
index cbb09bbfe3a1dd9e0359ee05376a40481fa4b5f1..190dbd2519c54342b917b119816ffd02f97d8da9 100644
--- a/hercules_opt/src/fork_transforms.rs
+++ b/hercules_opt/src/fork_transforms.rs
@@ -725,8 +725,13 @@ pub fn chunk_fork_unguarded(
 ) -> () {
     // tid_dim_idx = tid_dim_idx * tile_size + tid_(dim_idx + 1)
 
+
     let Node::Fork { control: old_control, factors: ref old_factors} = *editor.node(fork) else {return};
 
+    if dim_idx >= old_factors.len()  {
+        return; // FIXME Error here?
+    }
+
     let mut new_factors: Vec<_> = old_factors.to_vec();
 
     let fork_users: Vec<_> = editor.get_users(fork).map(|f| (f, editor.node(f).clone())).collect();