diff --git a/src/timeman.cpp b/src/timeman.cpp
index bdcaee84..3bc9a317 100644
--- a/src/timeman.cpp
+++ b/src/timeman.cpp
@@ -17,8 +17,8 @@
along with this program. If not, see .
*/
-#include
#include
+#include
#include "search.h"
#include "timeman.h"
@@ -110,7 +110,12 @@ void TimeManager::init(const Search::LimitsType& limits, int currentPly, Color u
// Initialize to maximum values but unstablePVExtraTime that is reset
unstablePVExtraTime = 0;
- optimumSearchTime = maximumSearchTime = limits.time[us];
+ optimumSearchTime = maximumSearchTime = limits.time[us]; // In msec
+
+ // Scale down emergencyBaseTime if we are under very high time pressure to
+ // avoid moving immediately and so blundering.
+ if (maximumSearchTime)
+ emergencyBaseTime /= std::max(emergencyBaseTime * 100 / maximumSearchTime, 1);
// We calculate optimum time usage for different hypothetic "moves to go"-values and choose the
// minimum of calculated search time values. Usually the greatest hypMTG gives the minimum values.