Index: /issm/trunk-jpl/src/c/classes/Elements/Penta.cpp
===================================================================
--- /issm/trunk-jpl/src/c/classes/Elements/Penta.cpp	(revision 27293)
+++ /issm/trunk-jpl/src/c/classes/Elements/Penta.cpp	(revision 27294)
@@ -3901,4 +3901,5 @@
 
 	/*intermediary: */
+	bool       ishydro;
 	IssmDouble C;
 	IssmDouble xyz_list[NUMVERTICES][3];
@@ -3906,4 +3907,5 @@
 	/*get CFL coefficient:*/
 	this->parameters->FindParam(&C,TimesteppingCflCoefficientEnum);
+	this->parameters->FindParam(&ishydro,TransientIshydrologyEnum);
 
 	/*Get for Vx and Vy, the max of abs value: */
@@ -3939,4 +3941,18 @@
 	/*CFL criterion: */
 	IssmDouble dt = C/(maxabsvx/dx+maxabsvy/dy+maxabsvz/dz + 1.e-18);
+
+	/*Check hydro timestep also and take the minimum*/
+	if(ishydro){
+		if(IsOnBase()){
+			Input* vx_input = this->GetInput(HydrologyWaterVxEnum); _assert_(vx_input);
+			Input* vy_input = this->GetInput(HydrologyWaterVyEnum); _assert_(vy_input);
+			IssmDouble maxabsvx = vx_input->GetInputMaxAbs();
+			IssmDouble maxabsvy = vy_input->GetInputMaxAbs();
+
+			/*CFL criterion: */
+			IssmDouble dt2 = C/(maxabsvx/dx+maxabsvy/dy + 1.e-18);
+			if(dt2<dt) dt = dt2;
+		}
+	}
 
 	return dt;
Index: /issm/trunk-jpl/src/c/classes/Elements/Tria.cpp
===================================================================
--- /issm/trunk-jpl/src/c/classes/Elements/Tria.cpp	(revision 27293)
+++ /issm/trunk-jpl/src/c/classes/Elements/Tria.cpp	(revision 27294)
@@ -5253,4 +5253,5 @@
 
 	/*intermediary: */
+	bool       ishydro;
 	IssmDouble C;
 	IssmDouble xyz_list[NUMVERTICES][3];
@@ -5258,4 +5259,5 @@
 	/*get CFL coefficient:*/
 	this->parameters->FindParam(&C,TimesteppingCflCoefficientEnum);
+	this->parameters->FindParam(&ishydro,TransientIshydrologyEnum);
 
 	/*Get for Vx and Vy, the max of abs value: */
@@ -5284,4 +5286,16 @@
 	/*CFL criterion: */
 	IssmDouble dt = C/(maxabsvx/dx+maxabsvy/dy + 1.e-18);
+
+	/*Check hydro timestep also and take the minimum*/
+	if(ishydro){
+		Input* vx_input = this->GetInput(HydrologyWaterVxEnum); _assert_(vx_input);
+		Input* vy_input = this->GetInput(HydrologyWaterVyEnum); _assert_(vy_input);
+		IssmDouble maxabsvx = vx_input->GetInputMaxAbs();
+		IssmDouble maxabsvy = vy_input->GetInputMaxAbs();
+
+		/*CFL criterion: */
+		IssmDouble dt2 = C/(maxabsvx/dx+maxabsvy/dy + 1.e-18);
+		if(dt2<dt) dt = dt2;
+	}
 
 	return dt;
