diff --git a/R/RunModel_Lag.R b/R/RunModel_Lag.R
index e3bb075b1fa903c07c3df5002c6d35fce018ab52..b625ac1f6b98a679d714a4224ed580ce44a3a9aa 100644
--- a/R/RunModel_Lag.R
+++ b/R/RunModel_Lag.R
@@ -75,6 +75,7 @@ RunModel_Lag <- function(InputsModel, RunOptions, Param) {
       rep(0, floor(PT[x] + 1))
     })
   }
+  #message("Initstates: ",paste(IniStates, collapse = ", "))
 
   for (upstream_basin in seq_len(NbUpBasins)) {
     Qupstream <- InputsModel$Qupstream[RunOptions$IndPeriod_Run, upstream_basin]
@@ -85,6 +86,9 @@ RunModel_Lag <- function(InputsModel, RunOptions, Param) {
     Qupstream1 <- c(IniStates[[upstream_basin]][-length(IniStates[[upstream_basin]])], Qupstream[1:(LengthTs - floor(PT[upstream_basin]))])
     Qupstream2 <- IniStates[[upstream_basin]]
     if(LengthTs - floor(PT[upstream_basin]) - 1 > 0) Qupstream2 <- c(Qupstream2, Qupstream[1:(LengthTs - floor(PT[upstream_basin]) - 1)])
+    #message("Qupstream1: ", paste(Qupstream1, collapse = ", "))
+    #message("Qupstream2: ", paste(Qupstream2, collapse = ", "))
+
     OutputsModel$Qsim <- OutputsModel$Qsim +
                          Qupstream1 * HUTRANS[1, upstream_basin] +
                          Qupstream2 * HUTRANS[2, upstream_basin]
@@ -96,12 +100,19 @@ RunModel_Lag <- function(InputsModel, RunOptions, Param) {
   }
   # Convert back Qsim to mm
   OutputsModel$Qsim <- OutputsModel$Qsim / sum(InputsModel$BasinAreas, na.rm = TRUE) / 1e3
+  #message("Qsim: ",paste(OutputsModel$Qsim, collapse = ", "))
 
   if ("StateEnd" %in% RunOptions$Outputs_Sim) {
     OutputsModel$StateEnd$SD <- lapply(seq(NbUpBasins), function(x) {
       LengthTs <- tail(RunOptions$IndPeriod_Run,1)
-      InputsModel$Qupstream[(LengthTs - floor(PT[x])):LengthTs, x]
+      Qupstream <- InputsModel$Qupstream[(LengthTs - floor(PT[x])):LengthTs, x]
+      if (!is.na(InputsModel$BasinAreas[x])) {
+        # Upstream flow with area needs to be converted to m3 by time step
+        Qupstream <- Qupstream * InputsModel$BasinAreas[x] * 1e3
+      }
+      return(Qupstream)
     })
+    #message("StateEnd: ",paste(OutputsModel$StateEnd$SD, collapse = ", "))
   }
 
   return(OutputsModel)
diff --git a/tests/testthat/test-RunModel.R b/tests/testthat/test-RunModel.R
index b12867f026b01acf99a3508f4b77751c613348a1..e32f9311fe752831531848b490d6672ad5f30e1d 100644
--- a/tests/testthat/test-RunModel.R
+++ b/tests/testthat/test-RunModel.R
@@ -17,8 +17,9 @@ test_that("RunModelSupervisor with no regulation should returns same results as
   Qobs <- cbind(sapply(Severn$BasinsObs, function(x) {x$discharge_spec}))
   InputsModel <- CreateInputsModel(griwrm, DatesR, Precip, PotEvap, Qobs)
   # RunOptions
+  nTS <- 365
   IndPeriod_Run <- seq(
-    length(InputsModel[[1]]$DatesR) - 365,
+    length(InputsModel[[1]]$DatesR) - nTS + 1,
     length(InputsModel[[1]]$DatesR)
   )
   IndPeriod_WarmUp = seq(IndPeriod_Run[1]-366,IndPeriod_Run[1]-1)