Index: /issm/trunk-jpl/src/c/modules/SurfaceMassBalancex/Gembx.cpp
===================================================================
--- /issm/trunk-jpl/src/c/modules/SurfaceMassBalancex/Gembx.cpp	(revision 24203)
+++ /issm/trunk-jpl/src/c/modules/SurfaceMassBalancex/Gembx.cpp	(revision 24204)
@@ -26,4 +26,6 @@
 const double CA = 1005.0;                    // heat capacity of air (J kg-1 K-1)
 const double R = 8.314;                      // gas constant (J mol-1 K-1)
+
+const double Delflag=-99999;
 
 void Gembx(FemModel* femmodel){  /*{{{*/
@@ -1247,5 +1249,5 @@
 
 			// if d > the density of ice, d = dIce
-			if (d[0] > dIce+Dtol){
+			if (d[0] > dIce-Dtol){
 				d[0] = dIce;           // adjust d
 				dz[0] = mass / d[0];    // dz is adjusted to conserve mass
@@ -1401,5 +1403,5 @@
 
 		// if pore water froze in ice then adjust d and dz thickness
-		for(int i=0;i<n;i++)if(d[i]>dIce-Dtol)d[i]=dIce;
+		for(int i=0;i<n;i++)if(d[i]> dIce-Dtol)d[i]=dIce;
 		for(int i=0;i<n;i++) dz[i]= m[i]/d[i];
 
@@ -1416,5 +1418,5 @@
 
 	// run melt algorithm if there is melt water or excess pore water
-	if ((cellsum(exsT,n) > 0.0 + Ttol) || (cellsum(exsW,n) > 0.0 + Wtol)){
+	if ((cellsum(exsT,n) > 0.0+Ttol) || (cellsum(exsW,n) > 0.0+Wtol)){
 		// _printf_(""MELT OCCURS");
 		// check to see if thermal energy exceeds energy to melt entire cell
@@ -1424,5 +1426,5 @@
 		surpT=xNew<IssmDouble>(n); for(int i=0;i<n;i++)surpT[i] = max(0.0, exsT[i]- LF/CI);
 
-		if (cellsum(surpT,n) > 0.0 + Ttol ){
+		if (cellsum(surpT,n) > 0.0+Ttol ){
 			// _printf_("T Surplus");
 			// calculate surplus energy
@@ -1430,5 +1432,5 @@
 
 			int i = 0;
-			while (cellsum(surpE,n) > 0.0 + Ttol){
+			while (cellsum(surpE,n) > 0.0+Ttol){
 				// use surplus energy to increase the temperature of lower cell
 				T[i+1] = surpE[i]/m[i+1]/CI + T[i+1];
@@ -1464,5 +1466,5 @@
 		X = 0;
 		for(int i=n-1;i>=0;i--){
-			if(M[i]>0.0+Wtol || exsW[i]>0.0+Wtol){
+			if(M[i]> 0.0+Wtol || exsW[i]> 0.0+Wtol){
 				X=i;
 				break;
@@ -1521,5 +1523,5 @@
 				Wi = (dIce-d[i])* Swi * dz_0;            // irreducible water 
 				dW[i] = min(inM - F1, Wi-W[i]);         // change in pore water
-				if (dW[i] < 0.0-Wtol && -1*dW[i]>W[i]-Wtol ){
+				if (dW[i] < 0.0-Wtol && -1*dW[i]> W[i]-Wtol ){
 					dW[i]= -1*W[i];
 				}
@@ -1552,5 +1554,5 @@
 
 		//// GRID CELL SPACING AND MODEL DEPTH
-		for(int i=0;i<n;i++)if (W[i] < 0.0 - Wtol) _error_("negative pore water generated in melt equations");
+		for(int i=0;i<n;i++)if (W[i] < 0.0-Wtol) _error_("negative pore water generated in melt equations");
 
 		// delete all cells with zero mass
@@ -1562,7 +1564,7 @@
 
 		// delete all cells with zero mass
-		D_size=0; for(int i=0;i<n;i++)if(m[i]>0.0)D_size++; 
+		D_size=0; for(int i=0;i<n;i++)if(m[i]> (0.0+Wtol))D_size++; 
 		D=xNew<int>(D_size);
-		D_size=0; for(int i=0;i<n;i++)if(m[i]>0.0){ D[D_size] = i; D_size++;}
+		D_size=0; for(int i=0;i<n;i++)if(m[i]> (0.0+Wtol)){ D[D_size] = i; D_size++;}
 
 		celldelete(&m,n,D,D_size);
@@ -1642,5 +1644,5 @@
 
 			// set cell to 99999 for deletion
-			m[i] = -99999;
+			m[i] = Delflag;
 		}
 	}
@@ -1650,5 +1652,5 @@
          //find closest cell to merge with
 		for(int i=n-2;i>=0;i--){
-			if(m[i]!=-99999){
+			if(m[i]!=Delflag){
 				X2=i;
 				X1=n-1;
@@ -1672,11 +1674,11 @@
 
 		// set cell to 99999 for deletion
-		m[X2] = -99999;
+		m[X2] = Delflag;
 	}
 
 	// delete combined cells
-	D_size=0; for(int i=0;i<n;i++)if(m[i]!=-99999)D_size++; 
+	D_size=0; for(int i=0;i<n;i++)if(m[i]> Delflag+Wtol)D_size++; 
 	D=xNew<int>(D_size); 
-	D_size=0; for(int i=0;i<n;i++)if(m[i]!=-99999){ D[D_size] = i; D_size++;}
+	D_size=0; for(int i=0;i<n;i++)if(m[i]> Delflag+Wtol){ D[D_size] = i; D_size++;}
 
 	celldelete(&m,n,D,D_size);
@@ -2073,5 +2075,5 @@
 
 	// if V = 0 goes to infinity therfore if V = 0 change
-	if(V<0.01-Dtol)V=0.01;
+	if(V< 0.01-Dtol)V=0.01;
 
 	// calculate the Bulk Richardson Number (Ri)
Index: /issm/trunk-jpl/test/NightlyRun/test243.m
===================================================================
--- /issm/trunk-jpl/test/NightlyRun/test243.m	(revision 24203)
+++ /issm/trunk-jpl/test/NightlyRun/test243.m	(revision 24204)
@@ -48,5 +48,5 @@
 %Fields and tolerances to track changes
 field_names      ={'SmbDz','SmbT' ,'SmbD' ,'SmbRe','SmbGdn','SmbGsp','SmbA' ,'SmbEC','SmbMassBalance','SmbMAdd','SmbDzAdd','SmbFAC','SmbMeanSHF','SmbMeanLHF','SmbMeanULW','SmbNetLW','SmbNetSW'};
-field_tolerances ={1e-11,1e-12,1e-11,2e-11,1e-11,1e-11,1e-12,4e-12,1e-12,1e-12,1e-12,2e-10,2e-11, 2e-11, 1e-11, 2e-9, 2e-11};
+field_tolerances ={1e-11,1e-12,1e-11,8e-10,1e-11,10e-8,1e-12,4e-12,1e-12,1e-12,1e-12,2e-10,2e-11, 2e-11, 1e-11, 2e-9, 2e-11};
 
 field_values={...
Index: /issm/trunk-jpl/test/NightlyRun/test243.py
===================================================================
--- /issm/trunk-jpl/test/NightlyRun/test243.py	(revision 24203)
+++ /issm/trunk-jpl/test/NightlyRun/test243.py	(revision 24204)
@@ -62,5 +62,5 @@
 #Fields and tolerances to track changes
 field_names = ['SmbDz', 'SmbT', 'SmbD', 'SmbRe', 'SmbGdn', 'SmbGsp', 'SmbA', 'SmbEC', 'SmbMassBalance', 'SmbMAdd', 'SmbDzAdd', 'SmbFAC', 'SmbMeanSHF', 'SmbMeanLHF', 'SmbMeanULW', 'SmbNetLW', 'SmbNetSW']
-field_tolerances = [1e-11, 1e-12, 1e-11, 2e-11, 1e-11, 1e-11, 1e-12, 4e-12, 1e-12, 1e-12, 1e-12, 2e-10, 2e-11, 2e-11, 1e-11, 2e-9, 2e-11]
+field_tolerances = [1e-11,1e-12,1e-11,8e-10,1e-11,10e-8,1e-12,4e-12,1e-12,1e-12,1e-12,2e-10,2e-11, 2e-11, 1e-11, 2e-9, 2e-11]
 #shape is different in python solution (fixed using reshape) which can cause test failure:
 field_values = [md.results.TransientSolution[-1].SmbDz[0, 0:240].reshape(1, -1),
Index: /issm/trunk-jpl/test/NightlyRun/test252.m
===================================================================
--- /issm/trunk-jpl/test/NightlyRun/test252.m	(revision 24203)
+++ /issm/trunk-jpl/test/NightlyRun/test252.m	(revision 24204)
@@ -59,8 +59,8 @@
 	'SmbDz3','SmbT3' ,'SmbD3' ,'SmbRe3','SmbGdn3','SmbGsp3','SmbA3' ,'SmbEC3','SmbMassBalance3','SmbMAdd3','SmbDzAdd3','SmbFAC3',...
 	'SmbDz4','SmbT4' ,'SmbD4' ,'SmbRe4','SmbGdn4','SmbGsp4','SmbA4' ,'SmbEC4','SmbMassBalance4','SmbMAdd4','SmbDzAdd4','SmbFAC4'};
-field_tolerances ={1e-11,1e-12,1e-11,2e-11,1e-11,1e-11,1e-12,2e-12,1e-12,1e-12,1e-12,1e-11,...
-	                1e-11,1e-12,1e-11,2e-11,1e-11,1e-11,1e-12,4e-12,1e-12,1e-12,1e-12,2e-11,...
-	                1e-11,1e-12,1e-11,2e-11,1e-11,1e-11,1e-12,1e-11,1e-11,1e-12,1e-12,2e-11,...
-	                5e-9,1e-12,2e-9,3e-10,1e-11,1e-11,3e-11,1e-11,5e-9,1e-12,1e-12,4e-10};
+field_tolerances ={1e-11,1e-12,1e-11,2e-11,1e-11,1e-11,1e-12,1e-12,1e-12,1e-12,1e-12,1e-11,...
+                   1e-11,1e-12,1e-11,2e-11,1e-11,8e-8,1e-12,4e-12,1e-12,1e-12,1e-12,1e-11,...
+                   1e-11,1e-12,1e-11,2e-11,1e-11,7e-7,1e-12,1e-12,1e-12,1e-12,1e-12,1e-11,...
+                   1e-11,1e-12,1e-11,6e-11,1e-11,9.5e-8,1e-12,1e-12,1e-12,1e-12,1e-12,2e-11};
 
 field_values={...
Index: /issm/trunk-jpl/test/NightlyRun/test252.py
===================================================================
--- /issm/trunk-jpl/test/NightlyRun/test252.py	(revision 24203)
+++ /issm/trunk-jpl/test/NightlyRun/test252.py	(revision 24204)
@@ -71,8 +71,8 @@
 #Fields and tolerances to track changes
 field_names = ['SmbDz1','SmbT1' ,'SmbD1' ,'SmbRe1','SmbGdn1','SmbGsp1','SmbA1' ,'SmbEC1','SmbMassBalance1','SmbMAdd1','SmbDzAdd1','SmbFAC1','SmbDz2','SmbT2','SmbD2' ,'SmbRe2','SmbGdn2','SmbGsp2','SmbA2','SmbEC2','SmbMassBalance2','SmbMAdd2','SmbDzAdd2','SmbFAC2','SmbDz3','SmbT3','SmbD3','SmbRe3','SmbGdn3','SmbGsp3','SmbA3','SmbEC3','SmbMassBalance3','SmbMAdd3','SmbDzAdd3','SmbFAC3','SmbDz4','SmbT4' ,'SmbD4' ,'SmbRe4','SmbGdn4','SmbGsp4','SmbA4','SmbEC4','SmbMassBalance4','SmbMAdd4','SmbDzAdd4','SmbFAC4']
-field_tolerances = [1e-11,1e-12,1e-11,2e-11,1e-11,1e-11,1e-12,2e-12,1e-12,1e-12,1e-12,1e-11,
-					1e-11,1e-12,1e-11,2e-11,1e-11,1e-11,1e-12,4e-12,1e-12,1e-12,1e-12,2e-11,
-					1e-11,1e-12,1e-11,2e-11,1e-11,1e-11,1e-12,1e-11,1e-11,1e-12,1e-12,2e-11,
-					5e-9,1e-12,2e-9,3e-10,1e-11,1e-11,3e-11,1e-11,5e-9,1e-12,1e-12,4e-10]
+field_tolerances = [1e-11,1e-12,1e-11,2e-11,1e-11,1e-11,1e-12,1e-12,1e-12,1e-12,1e-12,1e-11,
+                   1e-11,1e-12,1e-11,2e-11,1e-11,8e-8,1e-12,4e-12,1e-12,1e-12,1e-12,1e-11,
+                   1e-11,1e-12,1e-11,2e-11,1e-11,7e-7,1e-12,1e-12,1e-12,1e-12,1e-12,1e-11,
+                   1e-11,1e-12,1e-11,6e-11,1e-11,9.5e-8,1e-12,1e-12,1e-12,1e-12,1e-12,2e-11]
 
 #shape is different in python solution (fixed using reshape) which can cause test failure:
