diff --git a/R/RunModel.InputsModel.R b/R/RunModel.InputsModel.R
index 538c18cc9adee81e9797d0dc172c5637359409c1..952ae003220162752e3de8d2b154e9b190963c8f 100644
--- a/R/RunModel.InputsModel.R
+++ b/R/RunModel.InputsModel.R
@@ -161,10 +161,10 @@ calcOverAbstraction <- function(O, WarmUp) {
     f <- lapply(f, function(x) paste0("WarmUp", x))
   }
   if (!is.null(O[[f$sim]])) {
-    if (any(O[[f$sim]] < 0)) {
+    if (any(!is.na(O[[f$sim]]) & O[[f$sim]] < 0)) {
       O[[f$over]] <- rep(0, length(O[[f$sim]]))
-      O[[f$over]][O[[f$sim]] < 0] <- - O[[f$sim]][O[[f$sim]] < 0]
-      O[[f$sim]][O[[f$sim]] < 0] <- 0
+      O[[f$over]][O[[f$sim]] < 0] <- - O[[f$sim]][!is.na(O[[f$sim]]) & O[[f$sim]] < 0]
+      O[[f$sim]][!is.na(O[[f$sim]]) & O[[f$sim]] < 0] <- 0
     }
   }
   return(O)
diff --git a/man/RunModel.InputsModel.Rd b/man/RunModel.InputsModel.Rd
index f4afb51d13e983abdda889f92d4c8cc84e922118..32bec4a7217d8aab658e945021367073d58bd182 100644
--- a/man/RunModel.InputsModel.Rd
+++ b/man/RunModel.InputsModel.Rd
@@ -35,6 +35,8 @@ is here completed by:
 \itemize{
 \item an item \verb{$Qsim_m3} storing the simulated discharge series in m3/s
 \item an item \verb{$Qover_m3} storing the volumes of over abstraction which occurs
-when \code{RunModel_Lag} warns for negative simulated flows.
+when \code{RunModel_Lag} warns for negative simulated flows. The latter reflects the volume
+that was planned to be drawn from the sub-basin but could not be drawn because
+of the lack of water.
 }
 }
diff --git a/tests/testthat/test-RunModel.R b/tests/testthat/test-RunModel.R
index ba5055ede2aefc5dc6104139611bd3adbd5e2840..a4b24cc1e5cce64dba7d8248a6fe7cb4e24a23c2 100644
--- a/tests/testthat/test-RunModel.R
+++ b/tests/testthat/test-RunModel.R
@@ -257,7 +257,7 @@ test_that("RunModel should return water deficit (Qover_m3)", {
   )
   g <- CreateGRiwrm(nodes)
   Qobs2 <- data.frame(P = rep(-2E6, length(DatesR)))
-  e <- setupRunModel(griwrm = g, runRunModel = TRUE, Qobs2 = Qobs2)
+  expect_warning(e <- setupRunModel(griwrm = g, runRunModel = TRUE, Qobs2 = Qobs2))
   for(x in ls(e)) assign(x, get(x, e))
   expect_false(any(OM_GriwrmInputs$`54001`$Qsim_m3 < 0))
   expect_true(all(OM_GriwrmInputs$`54001`$Qover_m3 >= 0))