Index: /issm/trunk-jpl/src/c/classes/Elements/Element.cpp
===================================================================
--- /issm/trunk-jpl/src/c/classes/Elements/Element.cpp	(revision 24022)
+++ /issm/trunk-jpl/src/c/classes/Elements/Element.cpp	(revision 24023)
@@ -2172,15 +2172,16 @@
 void       Element::Ismip6FloatingiceMeltingRate(){/*{{{*/
 
-	if(!this->IsIceInElement() || !this->IsFloating()) return;
-
-	const int NUM_VERTICES = this->GetNumberOfVertices();
+	if(!this->IsIceInElement() || !this->IsFloating() || !this->IsOnBase()) return;
 
 	int         basinid,num_basins,M,N;
 	IssmDouble  tf,gamma0,base,delta_t_basin,mean_tf_basin,absval;
-	IssmDouble* basalmeltrate = xNew<IssmDouble>(NUM_VERTICES);
 	bool        islocal;
 	IssmDouble* delta_t = NULL;
 	IssmDouble* mean_tf = NULL;
 	IssmDouble* depths  = NULL;
+
+	/*Allocate some arrays*/
+	const int numvertices = this->GetNumberOfVertices();
+	IssmDouble* basalmeltrate = xNew<IssmDouble>(numvertices);
 
 	/*Get variables*/
@@ -2208,5 +2209,5 @@
 	/*Compute melt rate for Local and Nonlocal parameterizations*/
 	Gauss* gauss=this->NewGauss();
-	for(int i=0;i<NUM_VERTICES;i++){
+	for(int i=0;i<numvertices;i++){
 		gauss->GaussVertex(i);
 		tf_input->GetInputValue(&tf,gauss);
@@ -2214,6 +2215,9 @@
 			absval = mean_tf_basin+delta_t_basin;
 			if (absval<0) {absval = -1.*absval;}
-			basalmeltrate[i] = gamma0*pow((rhow*cp)/(rhoi*lf),2)*(tf+delta_t_basin)*absval;}
-		else {basalmeltrate[i] = gamma0*pow((rhow*cp)/(rhoi*lf),2)*pow(max(tf+delta_t_basin,0.),2);}
+			basalmeltrate[i] = gamma0*pow((rhow*cp)/(rhoi*lf),2)*(tf+delta_t_basin)*absval;
+		}
+		else{
+			basalmeltrate[i] = gamma0*pow((rhow*cp)/(rhoi*lf),2)*pow(max(tf+delta_t_basin,0.),2);
+		}
 	}
 
@@ -2226,4 +2230,5 @@
 	xDelete<IssmDouble>(mean_tf);
 	xDelete<IssmDouble>(depths);
+	xDelete<IssmDouble>(basalmeltrate);
 
 }/*}}}*/
Index: /issm/trunk-jpl/src/c/cores/bmb_core.cpp
===================================================================
--- /issm/trunk-jpl/src/c/cores/bmb_core.cpp	(revision 24022)
+++ /issm/trunk-jpl/src/c/cores/bmb_core.cpp	(revision 24023)
@@ -35,3 +35,7 @@
 	/*Call module now*/
 	FloatingiceMeltingRatex(femmodel);
+
+	/*Extrude basal melt*/
+	femmodel->parameters->SetParam(BasalforcingsFloatingiceMeltingRateEnum,InputToExtrudeEnum);
+	extrudefrombase_core(femmodel);
 }
Index: /issm/trunk-jpl/src/c/modules/FloatingiceMeltingRatex/FloatingiceMeltingRatex.cpp
===================================================================
--- /issm/trunk-jpl/src/c/modules/FloatingiceMeltingRatex/FloatingiceMeltingRatex.cpp	(revision 24022)
+++ /issm/trunk-jpl/src/c/modules/FloatingiceMeltingRatex/FloatingiceMeltingRatex.cpp	(revision 24023)
@@ -154,8 +154,7 @@
 		for(int i=0;i<femmodel->elements->Size();i++){
 			Element* element=xDynamicCast<Element*>(femmodel->elements->GetObjectByOffset(i));
-			if(!element->IsOnBase()) continue;
+			if(!element->IsOnBase() || !element->IsIceInElement() || !element->IsFloating()) continue;
 			/*Spawn basal element if on base to compute element area*/
 			Element* basalelement = element->SpawnBasalElement();
-			if(!basalelement->IsIceInElement() || !basalelement->IsFloating()) continue;
 			Input* tf_input=basalelement->GetInput(BasalforcingsIsmp6TfShelfEnum); _assert_(tf_input);
 			basalelement->inputs->GetInputValue(&basinid,BasalforcingsIsmp6BasinIdEnum);
