diff --git a/R/Calibration.GRiwrmInputsModel.R b/R/Calibration.GRiwrmInputsModel.R
index f19108826cf90a20af79140bef210d4caa5ddcaa..f4671e11d5bcc9e480eb6d6501a5334bed607d36 100644
--- a/R/Calibration.GRiwrmInputsModel.R
+++ b/R/Calibration.GRiwrmInputsModel.R
@@ -36,7 +36,7 @@ Calibration.GRiwrmInputsModel <- function(InputsModel,
 
   for(id in gaugedIds) {
     IM <- InputsModel[[id]]
-    message("Calibration.GRiwrmInputsModel: Treating sub-basin ", id, "...")
+    message("Calibration.GRiwrmInputsModel: Processing sub-basin ", id, "...")
 
     if (inherits(InputsCrit[[id]], "InputsCritLavenneFunction")) {
       IC <- getInputsCrit_Lavenne(id, OutputsModel, InputsCrit)
diff --git a/R/CreateInputsModel.GRiwrm.R b/R/CreateInputsModel.GRiwrm.R
index ed5a5bf39869a9e6b615f5a0e2612be26eeb8ca4..ec38978debc2e9e1b31f88f0f3875a20380d9dc6 100644
--- a/R/CreateInputsModel.GRiwrm.R
+++ b/R/CreateInputsModel.GRiwrm.R
@@ -192,7 +192,7 @@ CreateInputsModel.GRiwrm <- function(x, DatesR,
   }
 
   for(id in getNodeRanking(x)) {
-    message("CreateInputsModel.GRiwrm: Treating sub-basin ", id, "...")
+    message("CreateInputsModel.GRiwrm: Processing sub-basin ", id, "...")
 
     InputsModel[[id]] <-
       CreateOneGRiwrmInputsModel(id = id,
diff --git a/R/RunModel.GRiwrmInputsModel.R b/R/RunModel.GRiwrmInputsModel.R
index 88edc075d1d9ec1d2520974ebc577af2a6325073..bd0f9833c69ca0be68aa9ad51006aa498ea41487 100644
--- a/R/RunModel.GRiwrmInputsModel.R
+++ b/R/RunModel.GRiwrmInputsModel.R
@@ -16,7 +16,7 @@ RunModel.GRiwrmInputsModel <- function(x, RunOptions, Param, ...) {
   class(OutputsModel) <- c("GRiwrmOutputsModel", class(OutputsModel))
 
   for(id in names(x)) {
-    message("RunModel.GRiwrmInputsModel: Treating sub-basin ", x[[id]]$id, "...")
+    message("RunModel.GRiwrmInputsModel: Processing sub-basin ", x[[id]]$id, "...")
 
     # Update x[[id]]$Qupstream with simulated upstream flows
     if(any(x[[id]]$UpstreamIsModeled)) {
diff --git a/R/RunModel.Supervisor.R b/R/RunModel.Supervisor.R
index fa759618266a90f26a99a984528be0eaa8f50981..ed7a588c6d4dd32b275d88cc337f310b3cfe6660 100644
--- a/R/RunModel.Supervisor.R
+++ b/R/RunModel.Supervisor.R
@@ -78,8 +78,16 @@ RunModel.Supervisor <- function(x, RunOptions, Param, ...) {
     x$OutputsModel[[id]]$StateEnd <- serializeIniStates(OM_WarmUp[[id]]$StateEnd)
   }
 
+  message("Processing: 0%", appendLF = FALSE)
+  iProgressSteps <- round(length(lSuperTS) * seq(0.1, 0.9, 0.1))
+
   # Loop over time steps with a step equal to the supervision time step
-  for(iTS in lSuperTS) {
+  for(i in seq_along(lSuperTS)) {
+    iProgressMessage <- which(i == iProgressSteps)
+    if (length(iProgressMessage) == 1) {
+      message(" ", 10 * iProgressMessage, "%", appendLF = FALSE)
+    }
+    iTS <- lSuperTS[[i]]
     # Run regulation on the whole basin for the current time step
     x$ts.index <- iTS - x$ts.index0
     x$ts.date <- x$InputsModel[[1]]$DatesR[iTS]
@@ -108,6 +116,9 @@ RunModel.Supervisor <- function(x, RunOptions, Param, ...) {
     }
     x$ts.previous <- x$ts.index
   }
+
+  message(" 100%")
+
   for(id in getSD_Ids(x$InputsModel)) {
     x$OutputsModel[[id]]$Qsim_m3 <- Qsim_m3[, id]
     x$OutputsModel[[id]]$Qsim <-