Index: /issm/trunk-jpl/src/c/classes/Nodes.cpp
===================================================================
--- /issm/trunk-jpl/src/c/classes/Nodes.cpp	(revision 24680)
+++ /issm/trunk-jpl/src/c/classes/Nodes.cpp	(revision 24681)
@@ -185,5 +185,5 @@
 	 * up by their clones: */
 	int  maxdofspernode = this->MaxNumDofs(setenum);
-	int* truedofs       = xNew<int>(this->Size()*maxdofspernode); //only one alloc
+	int* truedofs       = xNewZeroInit<int>(this->Size()*maxdofspernode); //only one alloc
 	for(int rank=0;rank<num_procs;rank++){
 		if(this->common_send[rank]){
Index: /issm/trunk-jpl/src/c/solutionsequences/solutionsequence_nonlinear.cpp
===================================================================
--- /issm/trunk-jpl/src/c/solutionsequences/solutionsequence_nonlinear.cpp	(revision 24680)
+++ /issm/trunk-jpl/src/c/solutionsequences/solutionsequence_nonlinear.cpp	(revision 24681)
@@ -85,4 +85,9 @@
 		InputUpdateFromSolutionx(femmodel,ug);
 
+		/*Clean up if rifts*/
+		if(femmodel->loads->numrifts){
+			delete Kfs; delete Kff; delete pf; delete df;
+		}
+
 		ConstraintsStatex(&constraints_converged,&num_unstable_constraints,femmodel);
 		if(VerboseConvergence()) _printf0_("   number of unstable constraints: " << num_unstable_constraints << "\n");
@@ -111,14 +116,17 @@
 		}
 
-		// Set the matrix entries to zero if we do an other iteration
-		Kff->SetZero();
-		Kfs->SetZero();
-		df->Set(0);
-		pf->Set(0);
+		/*Set the matrix entries to zero if we do an other iteration*/
+		if(femmodel->loads->numrifts==0){
+			Kff->SetZero();
+			Kfs->SetZero();
+			df->Set(0);
+			pf->Set(0);
+		}
 	}
 
-	// delete matrices after the iteration loop
-	delete Kff; delete pf; delete df;
-	delete Kfs;
+	/*delete matrices after the iteration loop*/
+	if(femmodel->loads->numrifts==0){
+		delete Kff; delete pf; delete df; delete Kfs;
+	}
 
 	if(VerboseConvergence()) _printf0_("\n   total number of iterations: " << count << "\n");
