Index: /issm/trunk-jpl/src/c/cores/controladm1qn3_core.cpp
===================================================================
--- /issm/trunk-jpl/src/c/cores/controladm1qn3_core.cpp	(revision 27766)
+++ /issm/trunk-jpl/src/c/cores/controladm1qn3_core.cpp	(revision 27767)
@@ -510,5 +510,5 @@
 	/*Intermediaries*/
 	long    omode;
-	double  f,dxmin,gttol;
+	double  f,dxmin,dfmin_frac,gttol;
 	int     maxsteps,maxiter;
 	int     intn ,num_controls,num_cost_functions,solution_type;
@@ -527,4 +527,5 @@
 	femmodel->parameters->FindParam(&maxiter,InversionMaxiterEnum);
 	femmodel->parameters->FindParamAndMakePassive(&dxmin,InversionDxminEnum);
+	femmodel->parameters->FindParamAndMakePassive(&dfmin_frac,InversionDfminFracEnum);
 	femmodel->parameters->FindParamAndMakePassive(&gttol,InversionGttolEnum);
 	femmodel->parameters->FindParamAndMakePassive(&scaling_factors,NULL,InversionControlScalingFactorsEnum);
@@ -590,6 +591,6 @@
 
 	/*Estimation of the expected decrease in f during the first iteration*/
-	double dfminFrac = 1.; /*Expected reduction of J*/
-	double df1=dfminFrac*f;
+	if(dfmin_frac==0.) dfmin_frac=1.;
+	double df1=dfmin_frac*f;
 
 	/*Call M1QN3 solver*/
Index: /issm/trunk-jpl/src/c/cores/controlm1qn3_core.cpp
===================================================================
--- /issm/trunk-jpl/src/c/cores/controlm1qn3_core.cpp	(revision 27766)
+++ /issm/trunk-jpl/src/c/cores/controlm1qn3_core.cpp	(revision 27767)
@@ -40,5 +40,5 @@
 	/*Intermediaries*/
 	long    omode;
-	double  f,dxmin,gttol; 
+	double  f,dxmin,dfmin_frac,gttol; 
 	int     maxsteps,maxiter;
 	int     intn,num_controls,num_cost_functions,solution_type;
@@ -60,4 +60,5 @@
 	femmodel->parameters->FindParam(&maxiter,InversionMaxiterEnum);
 	femmodel->parameters->FindParamAndMakePassive(&dxmin,InversionDxminEnum);
+	femmodel->parameters->FindParamAndMakePassive(&dfmin_frac,InversionDfminFracEnum);
 	femmodel->parameters->FindParamAndMakePassive(&gttol,InversionGttolEnum);
 	femmodel->parameters->FindParamAndMakePassive(&scaling_factors,NULL,InversionControlScalingFactorsEnum);
@@ -122,6 +123,6 @@
 
 	/*Estimation of the expected decrease in f during the first iteration*/
-	double dfminFrac = 1.; /*Expected reduction of J*/
-	double df1=dfminFrac*f;
+	if(dfmin_frac==0.) dfmin_frac=1.;
+	double df1=dfmin_frac*f;
 
 	/*Call M1QN3 solver*/
Index: /issm/trunk-jpl/src/c/modules/ModelProcessorx/Control/CreateParametersControl.cpp
===================================================================
--- /issm/trunk-jpl/src/c/modules/ModelProcessorx/Control/CreateParametersControl.cpp	(revision 27766)
+++ /issm/trunk-jpl/src/c/modules/ModelProcessorx/Control/CreateParametersControl.cpp	(revision 27767)
@@ -130,4 +130,5 @@
 				parameters->AddObject(iomodel->CopyConstantObject("md.inversion.incomplete_adjoint",InversionIncompleteAdjointEnum));
 				parameters->AddObject(iomodel->CopyConstantObject("md.inversion.dxmin",InversionDxminEnum));
+				parameters->AddObject(iomodel->CopyConstantObject("md.inversion.dfmin_frac",InversionDfminFracEnum));
 				parameters->AddObject(iomodel->CopyConstantObject("md.inversion.gttol",InversionGttolEnum));
 				parameters->AddObject(iomodel->CopyConstantObject("md.inversion.maxsteps",InversionMaxstepsEnum));
@@ -143,4 +144,5 @@
 			case 4:/*AD M1QN3*/
 				parameters->AddObject(iomodel->CopyConstantObject("md.inversion.dxmin",InversionDxminEnum));
+				parameters->AddObject(iomodel->CopyConstantObject("md.inversion.dfmin_frac",InversionDfminFracEnum));
 				parameters->AddObject(iomodel->CopyConstantObject("md.inversion.gttol",InversionGttolEnum));
 				parameters->AddObject(iomodel->CopyConstantObject("md.inversion.maxsteps",InversionMaxstepsEnum));
