diff --git a/Framework/MDAlgorithms/src/CalculateCoverageDGS.cpp b/Framework/MDAlgorithms/src/CalculateCoverageDGS.cpp
index 3bfe457e09cd1dd2463d2635d5fc5f6ab3d811c0..b6da15e974436e2e2fadff1f042b00b8a70572c1 100644
--- a/Framework/MDAlgorithms/src/CalculateCoverageDGS.cpp
+++ b/Framework/MDAlgorithms/src/CalculateCoverageDGS.cpp
@@ -261,8 +261,17 @@ void CalculateCoverageDGS::exec() {
 
   // Qmax is at  kf=kfmin or kf=kfmax
   m_ki = std::sqrt(energyToK * m_Ei);
-  m_kfmin = std::sqrt(energyToK * (m_Ei - m_dEmin));
-  m_kfmax = std::sqrt(energyToK * (m_Ei - m_dEmax));
+  if (m_Ei > m_dEmin) {
+    m_kfmin = std::sqrt(energyToK * (m_Ei - m_dEmin));
+  } else {
+    m_kfmin = 0.;
+  }
+  if (m_Ei > m_dEmax) {
+    m_kfmax = std::sqrt(energyToK * (m_Ei - m_dEmax));
+  } else {
+    m_kfmax = 0;
+  }
+
   double QmaxTemp =
       sqrt(m_ki * m_ki + m_kfmin * m_kfmin - 2 * m_ki * m_kfmin * cos(ttmax));
   double Qmax = QmaxTemp;