Index: /issm/branches/trunk-larour-NatGeoScience2016/src/c/analyses/MasstransportAnalysis.cpp
===================================================================
--- /issm/branches/trunk-larour-NatGeoScience2016/src/c/analyses/MasstransportAnalysis.cpp	(revision 22871)
+++ /issm/branches/trunk-larour-NatGeoScience2016/src/c/analyses/MasstransportAnalysis.cpp	(revision 22872)
@@ -671,4 +671,5 @@
 	IssmDouble* deltathickness    = xNew<IssmDouble>(numnodes);
 	IssmDouble* newbase        = xNew<IssmDouble>(numnodes);
+	IssmDouble* bed            = xNew<IssmDouble>(numnodes);
 	IssmDouble* newsurface     = xNew<IssmDouble>(numnodes);
 	IssmDouble* oldthickness   = xNew<IssmDouble>(numnodes);
@@ -688,5 +689,5 @@
 	}
 
-	/*Get previous base, thickness, surfac and current sealevel:*/
+	/*Get previous base, thickness, surfac and current sealevel and bed:*/
 	basalelement->GetInputListOnNodes(&oldbase[0],BaseEnum);
 	basalelement->GetInputListOnNodes(&oldsurface[0],SurfaceEnum);
@@ -694,4 +695,5 @@
 	basalelement->GetInputListOnNodes(&phi[0],MaskGroundediceLevelsetEnum);
 	basalelement->GetInputListOnNodes(&sealevel[0],SealevelEnum);
+	basalelement->GetInputListOnNodes(&bed[0],BedEnum);
 	basalelement->GetInputListOnNodes(&cumdeltathickness[0],SealevelriseCumDeltathicknessEnum);
 
@@ -709,6 +711,7 @@
 	for(i=0;i<numnodes;i++) {
 		if (phi[i]>0.){ //this is an ice sheet: just add thickness to base.
-			newsurface[i] = oldbase[i]+newthickness[i]; //surface = oldbase + newthickness
-			newbase[i]     = oldbase[i];                 //same base: do nothing
+			/*Update! actually, the bed has moved too!:*/
+			newsurface[i] = bed[i]+newthickness[i]; //surface = bed + newthickness
+			newbase[i]     = bed[i];                 //new base at new bed
 		}
 		else{ //this is an ice shelf: hydrostatic equilibrium*/
@@ -744,4 +747,5 @@
 	xDelete<IssmDouble>(phi);
 	xDelete<IssmDouble>(sealevel);
+	xDelete<IssmDouble>(bed);
 	
 	xDelete<int>(doflist);
