diff --git a/sPuReMD/src/charges.c b/sPuReMD/src/charges.c
index 87312167ca54ce2aa9258dcb0f1fbea60d2c6492..258ac7561ab0a653d6083aa4f23bf29212c00fe6 100644
--- a/sPuReMD/src/charges.c
+++ b/sPuReMD/src/charges.c
@@ -1521,7 +1521,17 @@ static void EE( reax_system * const system, control_params * const control,
         workspace->s[0][i] = system->atoms[i].q_init;
         workspace->mask_qmmm[i] = system->atoms[i].qmmm_mask;
     }
-    workspace->mask_qmmm[system->N_cm - 1] = 1;
+    if ( system->num_molec_charge_constraints == 0 )
+    {
+        workspace->mask_qmmm[system->N_cm - 1] = 1.0;
+    }
+    else
+    {
+        for ( int i = 0; i < system->num_molec_charge_constraints; ++i )
+        {
+            workspace->mask_qmmm[system->N + i] = 1.0;
+        }
+    }
 
     /* Mask the b vector as well */
     Vector_Mask_qmmm( workspace->b_s, workspace->mask_qmmm, system->N_cm );