diff --git a/R/RunModel.GR.R b/R/RunModel.GR.R
index 234fdfe32411b5f66048cbee3cb258ddd23cf120..2c9ba196a4066a979f6831a77199d3a46d6d3035 100644
--- a/R/RunModel.GR.R
+++ b/R/RunModel.GR.R
@@ -1,8 +1,11 @@
 #' Run of a rainfall-runoff model on a sub-basin
 #'
+#' Run ONLY the rainfall-runoff model, upstream flow routing and Diversions are
+#' not processed.
+#'
 #' @details
-#' This function runs [airGR::RunModel] and add an item `Qsim_m3` to the returned
-#' *OutputsModel* object.
+#' This function runs [airGR::RunModel] (without lag) and add an item `Qsim_m3`
+#' to the returned *OutputsModel* object.
 #'
 #' @param x \[object of class `InputsModel`\] `InputsModel` for [airGR::RunModel]
 #' @param RunOptions \[object of class *RunOptions*\] see [airGR::CreateRunOptions] for details
@@ -28,8 +31,7 @@ RunModel.GR <- function(x, RunOptions, Param, ...) {
   FUN_MOD <- match.fun(x$FUN_MOD)
   OutputsModel <- FUN_MOD(x, RunOptions = RunOptions,
           Param = Param[iFirstParamRunOffModel:length(Param)])
-  # Add Qsim_m3 in m3/timestep
-  OutputsModel$Qsim_m3 <- OutputsModel$Qsim * sum(x$BasinAreas) * 1e3
+  OutputsModel <- complete_OutputsModel(OutputsModel, RunOptions, x$BasinAreas)
 
   return(OutputsModel)
 }
diff --git a/R/RunModel.InputsModel.R b/R/RunModel.InputsModel.R
index 0693e4427078cbcfe79c654cfd8602ba8385d698..476445937257b72dcb4ec6bcc7a9c6ad9976d86e 100644
--- a/R/RunModel.InputsModel.R
+++ b/R/RunModel.InputsModel.R
@@ -62,17 +62,7 @@ RunModel.InputsModel <- function(x = NULL,
     OutputsModel <- calcOverAbstraction(OutputsModel, FALSE)
     OutputsModel$RunOptions <- calcOverAbstraction(OutputsModel$RunOptions, TRUE)
   }
-  OutputsModel$RunOptions$TimeStep <- RunOptions$FeatFUN_MOD$TimeStep
-  if (is.null(OutputsModel$Qsim_m3)) {
-    # Add Qsim_m3 in m3/timestep
-    OutputsModel$Qsim_m3 <-
-      OutputsModel$Qsim * sum(x$BasinAreas, na.rm = TRUE) * 1e3
-  }
-  if ("WarmUpQsim" %in% RunOptions$Outputs_Sim &&
-      is.null(OutputsModel$RunOptions$WarmUpQsim_m3)) {
-    OutputsModel$RunOptions$WarmUpQsim_m3 <-
-      OutputsModel$RunOptions$WarmUpQsim * sum(x$BasinAreas, na.rm = TRUE) * 1e3
-  }
+  OutputsModel <- complete_OutputsModel(OutputsModel, RunOptions, x$BasinAreas)
   if (x$hasDiversion && !x$isReservoir) {
     OutputsModel <- RunModel_Diversion(x, RunOptions, OutputsModel)
   }
diff --git a/R/RunModel_Routing.R b/R/RunModel_Routing.R
index 5463c6a42fa7bbe78f5fabc1141dbcd039c540a1..461b870d5c2f8077afa99d41c80cbaa801a111a0 100644
--- a/R/RunModel_Routing.R
+++ b/R/RunModel_Routing.R
@@ -20,20 +20,15 @@ RunModel_Routing <- function(x, RunOptions, Param, QcontribDown = NULL, ...) {
     x$BasinAreas[length(x$BasinAreas)] <- 1E-6
   }
   OutputsModel <- RunModel_Lag_enhanced(x,
-                                          RunOptions = RunOptions,
-                                          Param = Param[1],
-                                          QcontribDown = QcontribDown)
+                                        RunOptions = RunOptions,
+                                        Param = Param[1],
+                                        QcontribDown = QcontribDown)
   if (is.null(OutputsModel$DatesR)) {
     OutputsModel$DatesR <- x$DatesR[RunOptions$IndPeriod_Run]
   }
-  if ("WarmUpQsim" %in% RunOptions$Outputs_Sim) {
-    OutputsModel$RunOptions$WarmUpQsim_m3 <-
-      OutputsModel$RunOptions$WarmUpQsim * sum(x$BasinAreas, na.rm = TRUE) * 1e3
-  }
+  OutputsModel <- complete_OutputsModel(OutputsModel, RunOptions, x$BasinAreas)
   OutputsModel <- calcOverAbstraction(OutputsModel, FALSE)
   OutputsModel$RunOptions <- calcOverAbstraction(OutputsModel$RunOptions, TRUE)
-
-  OutputsModel$RunOptions$TimeStep <- RunOptions$FeatFUN_MOD$TimeStep
   return(OutputsModel)
 }
 
diff --git a/R/utils.RunModel.R b/R/utils.RunModel.R
index 4515e2e75be54a3fb94dddddefcc83d066e983b5..dbf187bfb894844598d9b09ad1382b72f0005228 100644
--- a/R/utils.RunModel.R
+++ b/R/utils.RunModel.R
@@ -149,3 +149,18 @@ add_OutputsModel_attributes <- function(InputsModel, OutputsModel, IndPeriod_Run
   attr(OutputsModel, "TimeStep") <- attr(InputsModel, "TimeStep")
   return(OutputsModel)
 }
+
+complete_OutputsModel <- function(OutputsModel, RunOptions, BasinAreas) {
+  OutputsModel$RunOptions$TimeStep <- RunOptions$FeatFUN_MOD$TimeStep
+  if (is.null(OutputsModel$Qsim_m3)) {
+    # Add Qsim_m3 in m3/timestep
+    OutputsModel$Qsim_m3 <-
+      OutputsModel$Qsim * sum(BasinAreas, na.rm = TRUE) * 1e3
+  }
+  if ("WarmUpQsim" %in% RunOptions$Outputs_Sim &&
+      is.null(OutputsModel$RunOptions$WarmUpQsim_m3)) {
+    OutputsModel$RunOptions$WarmUpQsim_m3 <-
+      OutputsModel$RunOptions$WarmUpQsim * sum(BasinAreas, na.rm = TRUE) * 1e3
+  }
+  return(OutputsModel)
+}
\ No newline at end of file