Index: /issm/trunk-jpl/src/c/modules/SurfaceMassBalancex/Gembx.cpp
===================================================================
--- /issm/trunk-jpl/src/c/modules/SurfaceMassBalancex/Gembx.cpp	(revision 24208)
+++ /issm/trunk-jpl/src/c/modules/SurfaceMassBalancex/Gembx.cpp	(revision 24209)
@@ -18,4 +18,5 @@
 const double Gdntol = 1e-10;
 const double Wtol = 1e-13;
+const double Ptol = 1e-6;
 
 const double CI = 2102.0;                       // heat capacity of snow/ice (J kg-1 k-1)
@@ -414,5 +415,5 @@
 	const IssmDouble dSnow = 300;   // density of fresh snow [kg m-3]       
 
-	if(aIdx==0 || (d[0]-adThresh)<Dtol){
+	if(aIdx==0 || (adThresh - d[0])<Dtol){
 		a[0] = aValue;
 	}
@@ -1185,5 +1186,5 @@
 	for(int i=0;i<m;i++)massinit+=mInit[i];
 
-	if (P > 0.0+Dtol){
+	if (P > 0.0+Ptol){
 
 		if (T_air <= CtoK+Ttol){ // if snow
@@ -1214,5 +1215,5 @@
 			else { // if snow depth is less than specified minimum dz snow
 
-				IssmDouble mass = mInit[0] + P;         // grid cell adjust mass
+				mass = mInit[0] + P;         // grid cell adjust mass
 
 				dz[0] = dz[0] + P/dSnow;    // adjust grid cell depth      
@@ -1225,7 +1226,7 @@
 				// adjust a, re, gdn & gsp
 				if(aIdx>0)a[0] = (aSnow * P + a[0] * mInit[0])/mass;
-				re[0] = (refall * P + re[0] * mInit[0])/mass;
 				gdn[0] = (dfall * P + gdn[0] * mInit[0])/mass;
 				gsp[0] = (sfall * P + gsp[0] * mInit[0])/mass;
+				refall = (0.1 + (1.0-dfall)*0.25 + (0.5-sfall)*0.1)/2.0;
 			}
 		}
Index: /issm/trunk-jpl/test/NightlyRun/test243.m
===================================================================
--- /issm/trunk-jpl/test/NightlyRun/test243.m	(revision 24208)
+++ /issm/trunk-jpl/test/NightlyRun/test243.m	(revision 24209)
@@ -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,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_tolerances ={8e-10,5e-12,3e-10,8e-10,1e-11,2e-7,3e-11,4e-12,1e-12,1e-12,1e-12,2e-10,2e-11, 2e-11, 1e-11, 9e-10, 2e-11};
 
 field_values={...
Index: /issm/trunk-jpl/test/NightlyRun/test243.py
===================================================================
--- /issm/trunk-jpl/test/NightlyRun/test243.py	(revision 24208)
+++ /issm/trunk-jpl/test/NightlyRun/test243.py	(revision 24209)
@@ -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,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_tolerances = [8e-10,5e-12,3e-10,8e-10,1e-11,2e-7,3e-11,4e-12,1e-12,1e-12,1e-12,2e-10,2e-11, 2e-11, 1e-11, 9e-10, 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 24208)
+++ /issm/trunk-jpl/test/NightlyRun/test252.m	(revision 24209)
@@ -60,7 +60,7 @@
 	'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,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};
+                   1e-11,1e-12,1e-11,8e-10,1e-11,4e-11,1e-12,4e-12,1e-12,1e-12,1e-12,2e-11,...
+                   1e-11,1e-12,1e-11,8e-10,1e-11,4e-11,1e-12,3e-12,3e-12,1e-12,1e-12,2e-11,...
+                   2e-9,1e-11,3e-9,1e-9,1e-11,2e-7,7e-11,2e-12,3e-9,1e-12,1e-12,9e-11};
 
 field_values={...
Index: /issm/trunk-jpl/test/NightlyRun/test252.py
===================================================================
--- /issm/trunk-jpl/test/NightlyRun/test252.py	(revision 24208)
+++ /issm/trunk-jpl/test/NightlyRun/test252.py	(revision 24209)
@@ -72,7 +72,7 @@
 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,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]
+                   1e-11,1e-12,1e-11,8e-10,1e-11,4e-11,1e-12,4e-12,1e-12,1e-12,1e-12,2e-11,
+                   1e-11,1e-12,1e-11,8e-10,1e-11,4e-11,1e-12,3e-12,3e-12,1e-12,1e-12,2e-11,
+                   2e-9,1e-11,3e-9,1e-9,1e-11,2e-7,7e-11,2e-12,3e-9,1e-12,1e-12,9e-11]
 
 #shape is different in python solution (fixed using reshape) which can cause test failure:
