Index: /issm/trunk-jpl/src/c/classes/Elements/Element.cpp
===================================================================
--- /issm/trunk-jpl/src/c/classes/Elements/Element.cpp	(revision 19324)
+++ /issm/trunk-jpl/src/c/classes/Elements/Element.cpp	(revision 19325)
@@ -1685,4 +1685,6 @@
 	int        i;
 	IssmDouble* agd=xNew<IssmDouble>(numvertices); // surface mass balance
+	IssmDouble* melt=xNew<IssmDouble>(numvertices); // surface mass balance
+	IssmDouble* accu=xNew<IssmDouble>(numvertices); // surface mass balance
 	IssmDouble* monthlytemperatures=xNew<IssmDouble>(12*numvertices);
 	IssmDouble* monthlyprec=xNew<IssmDouble>(12*numvertices);
@@ -1748,5 +1750,5 @@
 	for (int iv = 0; iv<numvertices; iv++){
 		agd[iv]=PddSurfaceMassBalance(&monthlytemperatures[iv*12], &monthlyprec[iv*12],
-					pdds, pds, signorm, yts, h[iv], s[iv],
+					pdds, pds, &melt[iv], &accu[iv], signorm, yts, h[iv], s[iv],
 					desfac, s0t[iv], s0p[iv],rlaps,rlapslgm,TdiffTime,sealevTime,
 					rho_water,rho_ice);
@@ -1772,4 +1774,6 @@
 			this->inputs->AddInput(new TriaInput(TemperatureEnum,&yearlytemperatures[0],P1Enum));
 			this->inputs->AddInput(new TriaInput(SurfaceforcingsMassBalanceEnum,&agd[0],P1Enum));
+			this->inputs->AddInput(new TriaInput(SurfaceforcingsAccumulationEnum,&accu[0],P1Enum));
+			this->inputs->AddInput(new TriaInput(SurfaceforcingsMeltEnum,&melt[0],P1Enum));
 			break;
 		case PentaEnum: 
@@ -1800,4 +1804,6 @@
 	xDelete<IssmDouble>(monthlyprec);
 	xDelete<IssmDouble>(agd);
+	xDelete<IssmDouble>(melt);
+	xDelete<IssmDouble>(accu);
 	xDelete<IssmDouble>(yearlytemperatures);
 	xDelete<IssmDouble>(h);
Index: /issm/trunk-jpl/src/c/shared/Elements/PddSurfaceMassBalance.cpp
===================================================================
--- /issm/trunk-jpl/src/c/shared/Elements/PddSurfaceMassBalance.cpp	(revision 19324)
+++ /issm/trunk-jpl/src/c/shared/Elements/PddSurfaceMassBalance.cpp	(revision 19325)
@@ -8,6 +8,6 @@
 
 IssmDouble PddSurfaceMassBalance(IssmDouble* monthlytemperatures, IssmDouble* monthlyprec,
-				 IssmDouble* pdds, IssmDouble* pds, IssmDouble signorm,
-				 IssmDouble yts, IssmDouble h, IssmDouble s, IssmDouble desfac,
+				 IssmDouble* pdds, IssmDouble* pds, IssmDouble* melt, IssmDouble* accu, 
+				 IssmDouble signorm, IssmDouble yts, IssmDouble h, IssmDouble s, IssmDouble desfac,
 				 IssmDouble s0t,IssmDouble s0p, IssmDouble rlaps,IssmDouble rlapslgm,
 				 IssmDouble TdiffTime,IssmDouble sealevTime,
@@ -216,5 +216,7 @@
     Tsurf= min(Tsurf+fsupT*diffndd , 0.);}
 
-  B = -smelt+saccu;
+  melt[0]=smelt/yts;
+  accu[0]=saccu/yts;
+  B = saccu - smelt;
   B = B/yts;
   pddtj=pddt;
Index: /issm/trunk-jpl/src/c/shared/Elements/elements.h
===================================================================
--- /issm/trunk-jpl/src/c/shared/Elements/elements.h	(revision 19324)
+++ /issm/trunk-jpl/src/c/shared/Elements/elements.h	(revision 19325)
@@ -14,6 +14,6 @@
 // IssmDouble LliboutryDuval(IssmDouble temperature, IssmDouble waterfraction, IssmDouble depth,IssmDouble n);
 IssmDouble PddSurfaceMassBalance(IssmDouble* monthlytemperatures,  IssmDouble* monthlyprec,
-				 IssmDouble* pdds, IssmDouble* pds,IssmDouble signorm, IssmDouble yts,
-				 IssmDouble h, IssmDouble s, IssmDouble desfac,IssmDouble s0t,
+				 IssmDouble* pdds, IssmDouble* pds, IssmDouble* melt, IssmDouble* accu, IssmDouble signorm, 
+				 IssmDouble yts, IssmDouble h, IssmDouble s, IssmDouble desfac,IssmDouble s0t,
 				 IssmDouble s0p, IssmDouble rlaps, IssmDouble rlapslgm,
 				 IssmDouble TdiffTime,IssmDouble sealevTime,
