Index: /issm/trunk-jpl/src/c/modules/Reducevectorgtofx/Reducevectorgtofx.cpp
===================================================================
--- /issm/trunk-jpl/src/c/modules/Reducevectorgtofx/Reducevectorgtofx.cpp	(revision 27175)
+++ /issm/trunk-jpl/src/c/modules/Reducevectorgtofx/Reducevectorgtofx.cpp	(revision 27176)
@@ -16,5 +16,7 @@
 	/*If fsize is 0, return NULL vector*/
 	if(fsize==0){
-		*puf=NULL;
+		Vector<IssmDouble>* uf=new Vector<IssmDouble>(0);
+		*puf=uf;
+		//*puf=NULL;
 		return;
 	}
Index: /issm/trunk-jpl/src/c/solutionsequences/convergence.cpp
===================================================================
--- /issm/trunk-jpl/src/c/solutionsequences/convergence.cpp	(revision 27175)
+++ /issm/trunk-jpl/src/c/solutionsequences/convergence.cpp	(revision 27176)
@@ -1,5 +1,5 @@
 /*!\file: convergence.cpp
  * \brief: figure out if convergence has been reached
- */ 
+ */
 
 #include "../classes/classes.h"
@@ -21,13 +21,20 @@
 	IssmDouble res;
 	int analysis_type;
+	int ufsize;
 
 	if(VerboseModule()) _printf0_("   checking convergence\n");
 
-	/*If uf is NULL in input, f-set is nil, model is fully constrained, therefore converged from 
+	/*If uf is NULL in input, f-set is nil, model is fully constrained, therefore converged from
 	 * the get go: */
-	if(uf->IsEmpty()){
+	uf->GetSize(&ufsize);
+	if(ufsize==0){
 		*pconverged=true;
 		return;
 	}
+
+	/* if(uf->IsEmpty()){ */
+	/* 	*pconverged=true; */
+	/* 	return; */
+	/* } */
 
 	/*Force equilibrium (Mandatory)*/
@@ -54,5 +61,5 @@
 		converged=true;
 	}
-	else{ 
+	else{
 		if(VerboseConvergence()) _printf0_(setw(50)<<left<<"   mechanical equilibrium convergence criterion"<<res*100<<" > "<<eps_res*100<<" %\n");
 		converged=false;
@@ -64,5 +71,5 @@
 		//compute norm(du)/norm(u)
 		duf=old_uf->Duplicate(); old_uf->Copy(duf); duf->AYPX(uf,-1.0);
-		ndu=duf->Norm(NORM_TWO); nu=old_uf->Norm(NORM_TWO);
+		ndu=duf->Norm(NORM_TWO); nu=old_uf->Norm(NORM_TWO)+1.e-14;
 
 		if (xIsNan<IssmDouble>(ndu) || xIsNan<IssmDouble>(nu)) _error_("convergence criterion is NaN!");
@@ -76,5 +83,5 @@
 				if(VerboseConvergence()) _printf0_(setw(50) << left << "   Convergence criterion: norm(du)/norm(u)" << ndu/nu*100 << " < " << eps_rel*100 << " %\n");
 			}
-			else{ 
+			else{
 				if(VerboseConvergence()) _printf0_(setw(50) << left << "   Convergence criterion: norm(du)/norm(u)" << ndu/nu*100 << " > " << eps_rel*100 << " %\n");
 				converged=false;
