diff --git a/src/cats/vital_rates/hybrid_functions.c b/src/cats/vital_rates/hybrid_functions.c index ceb19689ac699657cae013f008c535a2ebda5e56..10615bf1fdff5b248f779fef3cae31f489cf8ed5 100644 --- a/src/cats/vital_rates/hybrid_functions.c +++ b/src/cats/vital_rates/hybrid_functions.c @@ -143,7 +143,7 @@ sigmoid(const struct cats_vital_rate *rate_info, K = K - K * rate_info->density_ts; assert(N >= 0); assert(K >= 0); - + cats_dt_rates old_rate = rate; switch (rate_info->density) { case DENSITY_DEP_NEGATIVE: @@ -152,10 +152,12 @@ sigmoid(const struct cats_vital_rate *rate_info, if (K == 0) return 0.0; rate = rate * density + (N / K) * rate_at_OT; // was: max_rate * scale; + if (rate > old_rate) rate = old_rate; break; case DENSITY_DEP_POSITIVE: if (K == 0) return 0.0; rate = rate * density + (1.0 - (N / K)) * rate_at_OT; // was: max_rate * scale; + if (rate < old_rate) rate = old_rate; break; case NO_DENSITY_DEP: break;