diff --git a/DESCRIPTION b/DESCRIPTION
index 4b22ecb57e4cc000e8476ab3b6b0f0f7c6bc3c9d..4bfc5252534c79d2cc076a4612225772bc3a43ec 100644
--- a/DESCRIPTION
+++ b/DESCRIPTION
@@ -1,8 +1,8 @@
 Package: airGR
 Type: Package
 Title: Suite of GR Hydrological Models for Precipitation-Runoff Modelling
-Version: 1.0.13.8
-Date: 2018-08-30
+Version: 1.0.13.9
+Date: 2018-08-31
 Authors@R: c(
   person("Laurent", "Coron", role = c("aut", "trl"), comment = c(ORCID = "0000-0002-1503-6204")),
   person("Charles", "Perrin", role = c("aut", "ths"), comment = c(ORCID = "0000-0001-8552-1881")),
diff --git a/NEWS.rmd b/NEWS.rmd
index 0c75d1dd44fb35b423e2c3830b6e469610be6c92..9d066e0a2872eaafa4cb71ccffb64fc59b62568e 100644
--- a/NEWS.rmd
+++ b/NEWS.rmd
@@ -14,7 +14,7 @@ output:
 
 
 
-### 1.0.13.8 Release Notes (2018-08-30) 
+### 1.0.13.8 Release Notes (2018-08-31) 
 
 
 #### Deprectated and defunct
diff --git a/R/Calibration_Michel.R b/R/Calibration_Michel.R
index 691d113401d5038da98f1ccb2ef6368bfc7d11c7..d1f0dcddf5422a7136b50b7513fa371c085e7bd2 100644
--- a/R/Calibration_Michel.R
+++ b/R/Calibration_Michel.R
@@ -1,315 +1,319 @@
-Calibration_Michel <- function(InputsModel, RunOptions, InputsCrit, CalibOptions, FUN_MOD, FUN_CRIT, FUN_TRANSFO = NULL, verbose = TRUE) {
-
-
-##_____Arguments_check_____________________________________________________________________
-    if (!inherits(InputsModel, "InputsModel")) {
-      stop("InputsModel must be of class 'InputsModel' \n")
-      return(NULL)
-    }  
-    if (!inherits(RunOptions, "RunOptions")) {
-      stop("RunOptions must be of class 'RunOptions' \n")
-      return(NULL)
-    }  
-    if (!inherits(InputsCrit, "InputsCrit")) {
-      stop("InputsCrit must be of class 'InputsCrit' \n")
-      return(NULL)
-    }  
-    if (!inherits(CalibOptions, "CalibOptions")) {
-      stop("CalibOptions must be of class 'CalibOptions' \n")
-      return(NULL)
-    }  
-    if (!inherits(CalibOptions, "HBAN")) {
-      stop("CalibOptions must be of class 'HBAN' if Calibration_Michel is used \n")
-      return(NULL)
-      }  
-
-
-   ##_check_FUN_TRANSFO
-    if (is.null(FUN_TRANSFO)) {
-      if (identical(FUN_MOD, RunModel_GR4H         )) {
-        FUN_TRANSFO <- TransfoParam_GR4H
-      }
-      if (identical(FUN_MOD, RunModel_GR4J         )) {
-        FUN_TRANSFO <- TransfoParam_GR4J
-      }
-      if (identical(FUN_MOD, RunModel_GR5J         )) {
-        FUN_TRANSFO <- TransfoParam_GR5J
-      }
-      if (identical(FUN_MOD, RunModel_GR6J         )) {
-        FUN_TRANSFO <- TransfoParam_GR6J
-      }
-      if (identical(FUN_MOD, RunModel_GR2M         )) {
-        FUN_TRANSFO <- TransfoParam_GR2M
+Calibration_Michel <- function(InputsModel, RunOptions, InputsCrit, CalibOptions,
+                               FUN_MOD, FUN_CRIT, FUN_TRANSFO = NULL, verbose = TRUE) {
+  
+  
+  ##_____Arguments_check_____________________________________________________________________
+  if (!inherits(InputsModel, "InputsModel")) {
+    stop("InputsModel must be of class 'InputsModel' \n")
+    return(NULL)
+  }  
+  if (!inherits(RunOptions, "RunOptions")) {
+    stop("RunOptions must be of class 'RunOptions' \n")
+    return(NULL)
+  }  
+  if (!inherits(InputsCrit, "InputsCrit")) {
+    stop("InputsCrit must be of class 'InputsCrit' \n")
+    return(NULL)
+  }  
+  if (!inherits(CalibOptions, "CalibOptions")) {
+    stop("CalibOptions must be of class 'CalibOptions' \n")
+    return(NULL)
+  }  
+  if (!inherits(CalibOptions, "HBAN")) {
+    stop("CalibOptions must be of class 'HBAN' if Calibration_Michel is used \n")
+    return(NULL)
+  }  
+  
+  
+  ##_check_FUN_TRANSFO
+  if (is.null(FUN_TRANSFO)) {
+    if (identical(FUN_MOD, RunModel_GR4H         )) {
+      FUN_TRANSFO <- TransfoParam_GR4H
+    }
+    if (identical(FUN_MOD, RunModel_GR4J         )) {
+      FUN_TRANSFO <- TransfoParam_GR4J
+    }
+    if (identical(FUN_MOD, RunModel_GR5J         )) {
+      FUN_TRANSFO <- TransfoParam_GR5J
+    }
+    if (identical(FUN_MOD, RunModel_GR6J         )) {
+      FUN_TRANSFO <- TransfoParam_GR6J
+    }
+    if (identical(FUN_MOD, RunModel_GR2M         )) {
+      FUN_TRANSFO <- TransfoParam_GR2M
+    }
+    if (identical(FUN_MOD, RunModel_GR1A         )) {
+      FUN_TRANSFO <- TransfoParam_GR1A
+    }
+    if (identical(FUN_MOD, RunModel_CemaNeige    )) {
+      FUN_TRANSFO <- TransfoParam_CemaNeige
+    }
+    if (identical(FUN_MOD, RunModel_CemaNeigeGR4J) | identical(FUN_MOD, RunModel_CemaNeigeGR5J) | identical(FUN_MOD, RunModel_CemaNeigeGR6J)) {
+      if (identical(FUN_MOD, RunModel_CemaNeigeGR4J)) {
+        FUN1 <- TransfoParam_GR4J
+        FUN2 <- TransfoParam_CemaNeige
       }
-      if (identical(FUN_MOD, RunModel_GR1A         )) {
-        FUN_TRANSFO <- TransfoParam_GR1A
+      if (identical(FUN_MOD, RunModel_CemaNeigeGR5J)) {
+        FUN1 <- TransfoParam_GR5J
+        FUN2 <- TransfoParam_CemaNeige
       }
-      if (identical(FUN_MOD, RunModel_CemaNeige    )) {
-        FUN_TRANSFO <- TransfoParam_CemaNeige
+      if (identical(FUN_MOD,RunModel_CemaNeigeGR6J)) {
+        FUN1 <- TransfoParam_GR6J
+        FUN2 <- TransfoParam_CemaNeige
       }
-      if (identical(FUN_MOD, RunModel_CemaNeigeGR4J) | identical(FUN_MOD, RunModel_CemaNeigeGR5J) | identical(FUN_MOD, RunModel_CemaNeigeGR6J)) {
-        if (identical(FUN_MOD, RunModel_CemaNeigeGR4J)) {
-          FUN1 <- TransfoParam_GR4J
-          FUN2 <- TransfoParam_CemaNeige
-        }
-        if (identical(FUN_MOD, RunModel_CemaNeigeGR5J)) {
-          FUN1 <- TransfoParam_GR5J
-          FUN2 <- TransfoParam_CemaNeige
+      FUN_TRANSFO <- function(ParamIn, Direction) {
+        Bool <- is.matrix(ParamIn)
+        if (Bool == FALSE) {
+          ParamIn <- rbind(ParamIn)
         }
-        if (identical(FUN_MOD,RunModel_CemaNeigeGR6J)) {
-          FUN1 <- TransfoParam_GR6J
-          FUN2 <- TransfoParam_CemaNeige
-        }
-        FUN_TRANSFO <- function(ParamIn, Direction) {
-          Bool <- is.matrix(ParamIn)
-          if (Bool == FALSE) {
-            ParamIn <- rbind(ParamIn)
-          }
-          ParamOut <- NA*ParamIn
-          NParam   <- ncol(ParamIn)
-          ParamOut[,          1:(NParam-2)] <- FUN1(ParamIn[,          1:(NParam-2)], Direction)
-          ParamOut[, (NParam-1):NParam    ] <- FUN2(ParamIn[, (NParam-1):NParam    ], Direction)
-          if (Bool == FALSE) {
-            ParamOut <- ParamOut[1, ]
-          }
-          return(ParamOut)
+        ParamOut <- NA * ParamIn
+        NParam   <- ncol(ParamIn)
+        ParamOut[,          1:(NParam-2)] <- FUN1(ParamIn[,          1:(NParam-2)], Direction)
+        ParamOut[, (NParam-1):NParam    ] <- FUN2(ParamIn[, (NParam-1):NParam    ], Direction)
+        if (Bool == FALSE) {
+          ParamOut <- ParamOut[1, ]
         }
+        return(ParamOut)
       }
-      if (is.null(FUN_TRANSFO)) {
-        stop("FUN_TRANSFO was not found (in Calibration function) \n")
-        return(NULL)
-      }
-    }
-
-    ##_variables_initialisation 
-    ParamFinalR <- NULL
-    ParamFinalT <- NULL
-    CritFinal   <- NULL
-    NRuns <- 0
-    NIter <- 0
-    if ("StartParamDistrib" %in% names(CalibOptions)) {
-      PrefilteringType <- 2
-    } else {
-      PrefilteringType <- 1
-    }
-    if (PrefilteringType == 1) {
-      NParam <- ncol(CalibOptions$StartParamList)
-    }
-    if (PrefilteringType == 2) {
-      NParam <- ncol(CalibOptions$StartParamDistrib)
     }
-    if (NParam > 20) {
-      stop("Calibration_Michel can handle a maximum of 20 parameters \n")
+    if (is.null(FUN_TRANSFO)) {
+      stop("FUN_TRANSFO was not found (in Calibration function) \n")
       return(NULL)
     }
-    HistParamR    <- matrix(NA, nrow = 500*NParam, ncol = NParam)
-    HistParamT    <- matrix(NA, nrow = 500*NParam, ncol = NParam)
-    HistCrit      <- matrix(NA, nrow = 500*NParam, ncol = 1)
-    CritName      <- NULL
-    CritBestValue <- NULL
-    Multiplier    <- NULL
-    CritOptim     <- +1E100
-    ##_temporary_change_of_Outputs_Sim
-    RunOptions$Outputs_Sim <- RunOptions$Outputs_Cal  ### this reduces the size of the matrix exchange with fortran and therefore speeds the calibration
-
-
-
-##_____Parameter_Grid_Screening____________________________________________________________
-
-
-    ##Definition_of_the_function_creating_all_possible_parameter_sets_from_different_values_for_each_parameter
-    ProposeCandidatesGrid <- function(DistribParam) {
-      NewCandidates <- expand.grid(lapply(seq_len(ncol(DistribParamR)), function(x) DistribParam[, x]))
-      NewCandidates <- unique(NewCandidates) # to avoid duplicates when a parameter is set
-      Output <- list(NewCandidates = NewCandidates)
-    }    
-
-
-    ##Creation_of_new_candidates_______________________________________________
-    OptimParam <- is.na(CalibOptions$FixedParam)
+  }
+  
+  ##_variables_initialisation 
+  ParamFinalR <- NULL
+  ParamFinalT <- NULL
+  CritFinal   <- NULL
+  NRuns <- 0
+  NIter <- 0
+  if ("StartParamDistrib" %in% names(CalibOptions)) {
+    PrefilteringType <- 2
+  } else {
+    PrefilteringType <- 1
+  }
+  if (PrefilteringType == 1) {
+    NParam <- ncol(CalibOptions$StartParamList)
+  }
+  if (PrefilteringType == 2) {
+    NParam <- ncol(CalibOptions$StartParamDistrib)
+  }
+  if (NParam > 20) {
+    stop("Calibration_Michel can handle a maximum of 20 parameters \n")
+    return(NULL)
+  }
+  HistParamR    <- matrix(NA, nrow = 500 * NParam, ncol = NParam)
+  HistParamT    <- matrix(NA, nrow = 500 * NParam, ncol = NParam)
+  HistCrit      <- matrix(NA, nrow = 500 * NParam, ncol = 1)
+  CritName      <- NULL
+  CritBestValue <- NULL
+  Multiplier    <- NULL
+  CritOptim     <- +1e100
+  ##_temporary_change_of_Outputs_Sim
+  RunOptions$Outputs_Sim <- RunOptions$Outputs_Cal  ### this reduces the size of the matrix exchange with fortran and therefore speeds the calibration
+  
+  
+  
+  ##_____Parameter_Grid_Screening____________________________________________________________
+  
+  
+  ##Definition_of_the_function_creating_all_possible_parameter_sets_from_different_values_for_each_parameter
+  ProposeCandidatesGrid <- function(DistribParam) {
+    NewCandidates <- expand.grid(lapply(seq_len(ncol(DistribParamR)), function(x) DistribParam[, x]))
+    NewCandidates <- unique(NewCandidates) # to avoid duplicates when a parameter is set
+    Output <- list(NewCandidates = NewCandidates)
+  }    
+  
+  
+  ##Creation_of_new_candidates_______________________________________________
+  OptimParam <- is.na(CalibOptions$FixedParam)
+  if (PrefilteringType == 1) {
+    CandidatesParamR <- CalibOptions$StartParamList
+  }
+  if (PrefilteringType == 2) {
+    DistribParamR <- CalibOptions$StartParamDistrib
+    DistribParamR[, !OptimParam] <- NA
+    CandidatesParamR <- ProposeCandidatesGrid(DistribParamR)$NewCandidates
+  }
+  ##Remplacement_of_non_optimised_values_____________________________________
+  CandidatesParamR <- apply(CandidatesParamR, 1, function(x) {
+    x[!OptimParam] <- CalibOptions$FixedParam[!OptimParam]
+    return(x)
+  })
+  if (NParam > 1) {
+    CandidatesParamR <- t(CandidatesParamR)
+  } else {
+    CandidatesParamR <- cbind(CandidatesParamR)
+  }
+  
+  ##Loop_to_test_the_various_candidates______________________________________
+  iNewOptim <- 0
+  Ncandidates <- nrow(CandidatesParamR)
+  if (verbose & Ncandidates > 1) {
     if (PrefilteringType == 1) {
-      CandidatesParamR <- CalibOptions$StartParamList
+      message("List-Screening in progress (", appendLF = FALSE)
     }
     if (PrefilteringType == 2) {
-      DistribParamR <- CalibOptions$StartParamDistrib
-      DistribParamR[,!OptimParam] <- NA
-      CandidatesParamR <- ProposeCandidatesGrid(DistribParamR)$NewCandidates
-    }
-    ##Remplacement_of_non_optimised_values_____________________________________
-    CandidatesParamR <- apply(CandidatesParamR, 1, function(x) {
-      x[!OptimParam] <- CalibOptions$FixedParam[!OptimParam]
-      return(x)})
-    if (NParam>1) {
-      CandidatesParamR <- t(CandidatesParamR)
-    } else { CandidatesParamR <- cbind(CandidatesParamR)
+      message("Grid-Screening in progress (", appendLF = FALSE)
     }
-
-    ##Loop_to_test_the_various_candidates______________________________________
-    iNewOptim <- 0
-    Ncandidates <- nrow(CandidatesParamR)
+    message("0%", appendLF = FALSE)
+  }
+  for (iNew in 1:nrow(CandidatesParamR)) {
     if (verbose & Ncandidates > 1) {
-      if (PrefilteringType == 1) {
-        message("List-Screening in progress (", appendLF = FALSE)
-      }
-      if (PrefilteringType == 2) {
-        message("Grid-Screening in progress (", appendLF = FALSE)
-      }
-      message("0%", appendLF = FALSE)
-    }
-    for (iNew in 1:nrow(CandidatesParamR)) {
-      if (verbose & Ncandidates > 1) {
-        for (k in c(2, 4, 6, 8)) {
-          if (iNew == round(k/10*Ncandidates)) {
-            message(" ", 10*k, "%", appendLF = FALSE)
-          }
-        } 
-      }
-      ##Model_run
-      Param <- CandidatesParamR[iNew, ]
-      OutputsModel <- FUN_MOD(InputsModel, RunOptions, Param)
-      ##Calibration_criterion_computation
-      OutputsCrit <- FUN_CRIT(InputsCrit, OutputsModel, verbose = FALSE)      
-      if (!is.na(OutputsCrit$CritValue)) {
-        if (OutputsCrit$CritValue*OutputsCrit$Multiplier < CritOptim) {
-          CritOptim <- OutputsCrit$CritValue*OutputsCrit$Multiplier
-          iNewOptim <- iNew
+      for (k in c(2, 4, 6, 8)) {
+        if (iNew == round(k / 10 * Ncandidates)) {
+          message(" ", 10 * k, "%", appendLF = FALSE)
         }
-      }
-      ##Storage_of_crit_info
-      if (is.null(CritName) | is.null(CritBestValue) | is.null(Multiplier)) {
-        CritName      <- OutputsCrit$CritName
-        CritBestValue <- OutputsCrit$CritBestValue
-        Multiplier    <- OutputsCrit$Multiplier
+      } 
+    }
+    ##Model_run
+    Param <- CandidatesParamR[iNew, ]
+    OutputsModel <- FUN_MOD(InputsModel, RunOptions, Param)
+    ##Calibration_criterion_computation
+    OutputsCrit <- FUN_CRIT(InputsCrit, OutputsModel, verbose = FALSE)      
+    if (!is.na(OutputsCrit$CritValue)) {
+      if (OutputsCrit$CritValue * OutputsCrit$Multiplier < CritOptim) {
+        CritOptim <- OutputsCrit$CritValue * OutputsCrit$Multiplier
+        iNewOptim <- iNew
       }
     }
-    if (verbose & Ncandidates > 1) {
-      message(" 100%)\n", appendLF = FALSE)
+    ##Storage_of_crit_info
+    if (is.null(CritName) | is.null(CritBestValue) | is.null(Multiplier)) {
+      CritName      <- OutputsCrit$CritName
+      CritBestValue <- OutputsCrit$CritBestValue
+      Multiplier    <- OutputsCrit$Multiplier
     }
-	  
-
-    ##End_of_first_step_Parameter_Screening____________________________________
-    ParamStartR <- CandidatesParamR[iNewOptim, ]
-    if (!is.matrix(ParamStartR)) {
-      ParamStartR <- matrix(ParamStartR, nrow = 1)
+  }
+  if (verbose & Ncandidates > 1) {
+    message(" 100%)\n", appendLF = FALSE)
+  }
+  
+  
+  ##End_of_first_step_Parameter_Screening____________________________________
+  ParamStartR <- CandidatesParamR[iNewOptim, ]
+  if (!is.matrix(ParamStartR)) {
+    ParamStartR <- matrix(ParamStartR, nrow = 1)
+  }
+  ParamStartT <- FUN_TRANSFO(ParamStartR, "RT")
+  CritStart   <- CritOptim
+  NRuns       <- NRuns+nrow(CandidatesParamR)
+  if (verbose) {
+    if (Ncandidates > 1) {
+      message(sprintf("\t Screening completed (%s runs)", NRuns))
     }
-    ParamStartT <- FUN_TRANSFO(ParamStartR, "RT")
-	  CritStart   <- CritOptim
-    NRuns       <- NRuns+nrow(CandidatesParamR)
-    if (verbose) {
-      if (Ncandidates > 1) {
-        message(sprintf("\t Screening completed (%s runs)", NRuns))
-      }
-      if (Ncandidates == 1) {
-        message("\t Starting point for steepest-descent local search:")
-      }
-      message("\t     Param = ", paste(sprintf("%8.3f", ParamStartR), collapse = " , "))
-      message(sprintf("\t     Crit %-12s = %.4f", CritName, CritStart*Multiplier))
+    if (Ncandidates == 1) {
+      message("\t Starting point for steepest-descent local search:")
     }
-    ##Results_archiving________________________________________________________
-    HistParamR[1, ] <- ParamStartR
-    HistParamT[1, ] <- ParamStartT
-    HistCrit[1, ]   <- CritStart
-
-
-
-
-##_____Steepest_Descent_Local_Search_______________________________________________________
-
-
-    ##Definition_of_the_function_creating_new_parameter_sets_through_a_step_by_step_progression_procedure
-    ProposeCandidatesLoc <- function(NewParamOptimT, OldParamOptimT, RangesT, OptimParam,Pace) {
-      ##Format_checking
-      if (nrow(NewParamOptimT) != 1 | nrow(OldParamOptimT) != 1) {
-        stop("each input set must be a matrix of one single line \n")
-        return(NULL)
-      }
-      if (ncol(NewParamOptimT)!=ncol(OldParamOptimT) | ncol(NewParamOptimT) != length(OptimParam)) {
-        stop("each input set must have the same number of values \n")
-        return(NULL)
-      }
-      ##Proposal_of_new_parameter_sets ###(local search providing 2*NParam-1 new sets)
-      NParam <- ncol(NewParamOptimT)
-      VECT <- NULL
-      for (I in 1:NParam) {
-        ##We_check_that_the_current_parameter_should_indeed_be_optimised
-        if (OptimParam[I] == TRUE) {
-          for (J in 1:2) {
-            Sign <- 2 * J - 3   #Sign can be equal to -1 or +1
-            ##We_define_the_new_potential_candidate
-            Add <- TRUE
-            PotentialCandidateT <- NewParamOptimT
-            PotentialCandidateT[1, I] <- NewParamOptimT[I] + Sign * Pace
-            ##If_we_exit_the_range_of_possible_values_we_go_back_on_the_boundary
-            if (PotentialCandidateT[1, I] < RangesT[1, I] ) {
-              PotentialCandidateT[1,I] <- RangesT[1, I]
-            }
-            if (PotentialCandidateT[1, I] > RangesT[2, I]) {
-              PotentialCandidateT[1,I] <- RangesT[2,I]
-            }
-            ##We_check_the_set_is_not_outside_the_range_of_possible_values
-             if (NewParamOptimT[I] == RangesT[1, I] & Sign < 0) {
-               Add <- FALSE
-             }
-             if (NewParamOptimT[I] == RangesT[2, I] & Sign > 0) {
-               Add <- FALSE
-             }
-            ##We_check_that_this_set_has_not_been_tested_during_the_last_iteration
-            if (identical(PotentialCandidateT, OldParamOptimT)) {
-              Add <- FALSE
-            }
-            ##We_add_the_candidate_to_our_list
-            if (Add == TRUE) {
-              VECT <- c(VECT, PotentialCandidateT)
-            }
+    message("\t     Param = ", paste(sprintf("%8.3f", ParamStartR), collapse = " , "))
+    message(sprintf("\t     Crit %-12s = %.4f", CritName, CritStart * Multiplier))
+  }
+  ##Results_archiving________________________________________________________
+  HistParamR[1, ] <- ParamStartR
+  HistParamT[1, ] <- ParamStartT
+  HistCrit[1, ]   <- CritStart
+  
+  
+  
+  
+  ##_____Steepest_Descent_Local_Search_______________________________________________________
+  
+  
+  ##Definition_of_the_function_creating_new_parameter_sets_through_a_step_by_step_progression_procedure
+  ProposeCandidatesLoc <- function(NewParamOptimT, OldParamOptimT, RangesT, OptimParam,Pace) {
+    ##Format_checking
+    if (nrow(NewParamOptimT) != 1 | nrow(OldParamOptimT) != 1) {
+      stop("each input set must be a matrix of one single line \n")
+      return(NULL)
+    }
+    if (ncol(NewParamOptimT)!=ncol(OldParamOptimT) | ncol(NewParamOptimT) != length(OptimParam)) {
+      stop("each input set must have the same number of values \n")
+      return(NULL)
+    }
+    ##Proposal_of_new_parameter_sets ###(local search providing 2 * NParam-1 new sets)
+    NParam <- ncol(NewParamOptimT)
+    VECT <- NULL
+    for (I in 1:NParam) {
+      ##We_check_that_the_current_parameter_should_indeed_be_optimised
+      if (OptimParam[I] == TRUE) {
+        for (J in 1:2) {
+          Sign <- 2 * J - 3   #Sign can be equal to -1 or +1
+          ##We_define_the_new_potential_candidate
+          Add <- TRUE
+          PotentialCandidateT <- NewParamOptimT
+          PotentialCandidateT[1, I] <- NewParamOptimT[I] + Sign * Pace
+          ##If_we_exit_the_range_of_possible_values_we_go_back_on_the_boundary
+          if (PotentialCandidateT[1, I] < RangesT[1, I] ) {
+            PotentialCandidateT[1,I] <- RangesT[1, I]
+          }
+          if (PotentialCandidateT[1, I] > RangesT[2, I]) {
+            PotentialCandidateT[1,I] <- RangesT[2,I]
+          }
+          ##We_check_the_set_is_not_outside_the_range_of_possible_values
+          if (NewParamOptimT[I] == RangesT[1, I] & Sign < 0) {
+            Add <- FALSE
+          }
+          if (NewParamOptimT[I] == RangesT[2, I] & Sign > 0) {
+            Add <- FALSE
+          }
+          ##We_check_that_this_set_has_not_been_tested_during_the_last_iteration
+          if (identical(PotentialCandidateT, OldParamOptimT)) {
+            Add <- FALSE
+          }
+          ##We_add_the_candidate_to_our_list
+          if (Add) {
+            VECT <- c(VECT, PotentialCandidateT)
           }
         }
       }
-      Output <- NULL
-      Output$NewCandidatesT <- matrix(VECT, ncol = NParam, byrow = TRUE)
-      return(Output)
-    }
-      
-
-    ##Initialisation_of_variables
-    if (verbose) {
-      message("Steepest-descent local search in progress") 
     }
-    Pace <- 0.64
-    PaceDiag <- rep(0, NParam)
-    CLG <- 0.7^(1/NParam)
-    Compt <- 0
-    CritOptim <- CritStart
-    ##Conversion_of_real_parameter_values
-    RangesR <- CalibOptions$SearchRanges
-    RangesT <- FUN_TRANSFO(RangesR, "RT")
-    NewParamOptimT <- ParamStartT
-    OldParamOptimT <- ParamStartT
-
-
-    ##START_LOOP_ITER_________________________________________________________
-    for (ITER in 1:(100*NParam)) {
-
-
+    Output <- NULL
+    Output$NewCandidatesT <- matrix(VECT, ncol = NParam, byrow = TRUE)
+    return(Output)
+  }
+  
+  
+  ##Initialisation_of_variables
+  if (verbose) {
+    message("Steepest-descent local search in progress") 
+  }
+  Pace <- 0.64
+  PaceDiag <- rep(0, NParam)
+  CLG <- 0.7^(1 / NParam)
+  Compt <- 0
+  CritOptim <- CritStart
+  ##Conversion_of_real_parameter_values
+  RangesR <- CalibOptions$SearchRanges
+  RangesT <- FUN_TRANSFO(RangesR, "RT")
+  NewParamOptimT <- ParamStartT
+  OldParamOptimT <- ParamStartT
+  
+  
+  ##START_LOOP_ITER_________________________________________________________
+  for (ITER in 1:(100 * NParam)) {
+    
+    
     ##Exit_loop_when_Pace_becomes_too_small___________________________________
     if (Pace < 0.01) {
       break
     }
-  
-
+    
+    
     ##Creation_of_new_candidates______________________________________________
     CandidatesParamT <- ProposeCandidatesLoc(NewParamOptimT, OldParamOptimT, RangesT, OptimParam, Pace)$NewCandidatesT
     CandidatesParamR <- FUN_TRANSFO(CandidatesParamT, "TR")
     ##Remplacement_of_non_optimised_values_____________________________________
     CandidatesParamR <- apply(CandidatesParamR, 1, function(x) {
       x[!OptimParam] <- CalibOptions$FixedParam[!OptimParam]
-      return(x)})
+      return(x)
+    })
     if (NParam > 1) {
       CandidatesParamR <- t(CandidatesParamR)
     } else {
       CandidatesParamR <- cbind(CandidatesParamR)
     }
-
-
+    
+    
     ##Loop_to_test_the_various_candidates_____________________________________
     iNewOptim <- 0
     for (iNew in 1:nrow(CandidatesParamR)) {
@@ -319,23 +323,23 @@ Calibration_Michel <- function(InputsModel, RunOptions, InputsCrit, CalibOptions
       ##Calibration_criterion_computation
       OutputsCrit <- FUN_CRIT(InputsCrit, OutputsModel, verbose = FALSE)      
       if (!is.na(OutputsCrit$CritValue)) {
-        if (OutputsCrit$CritValue*OutputsCrit$Multiplier < CritOptim) {
-          CritOptim <- OutputsCrit$CritValue*OutputsCrit$Multiplier
+        if (OutputsCrit$CritValue * OutputsCrit$Multiplier < CritOptim) {
+          CritOptim <- OutputsCrit$CritValue * OutputsCrit$Multiplier
           iNewOptim <- iNew
         }
       }
     }
     NRuns <- NRuns + nrow(CandidatesParamR)
-
-
+    
+    
     ##When_a_progress_has_been_achieved_______________________________________
     if (iNewOptim != 0) {
       ##We_store_the_optimal_set
       OldParamOptimT <- NewParamOptimT
       NewParamOptimT <- matrix(CandidatesParamT[iNewOptim, 1:NParam], nrow = 1)
-      Compt <- Compt+1
+      Compt <- Compt + 1
       ##When_necessary_we_increase_the_pace ### if_successive_progress_occur_in_a_row
-      if (Compt > 2*NParam) {
+      if (Compt > 2 * NParam) {
         Pace <- Pace * 2
         Compt <- 0
       }
@@ -347,14 +351,14 @@ Calibration_Michel <- function(InputsModel, RunOptions, InputsCrit, CalibOptions
         }
       }
     } else {
-    ##When_no_progress_has_been_achieved_we_decrease_the_pace_________________
+      ##When_no_progress_has_been_achieved_we_decrease_the_pace_________________
       Pace <- Pace / 2
       Compt <- 0
     }
-
-
+    
+    
     ##Test_of_an_additional_candidate_using_diagonal_progress_________________
-    if (ITER > 4*NParam) {
+    if (ITER > 4 * NParam) {
       NRuns <- NRuns + 1
       iNewOptim <- 0
       iNew <- 1
@@ -379,8 +383,8 @@ Calibration_Michel <- function(InputsModel, RunOptions, InputsCrit, CalibOptions
       OutputsModel <- FUN_MOD(InputsModel, RunOptions, Param)
       ##Calibration_criterion_computation
       OutputsCrit <- FUN_CRIT(InputsCrit, OutputsModel, verbose = FALSE)
-      if (OutputsCrit$CritValue*OutputsCrit$Multiplier < CritOptim) {
-        CritOptim <- OutputsCrit$CritValue*OutputsCrit$Multiplier
+      if (OutputsCrit$CritValue * OutputsCrit$Multiplier < CritOptim) {
+        CritOptim <- OutputsCrit$CritValue * OutputsCrit$Multiplier
         iNewOptim <- iNew
       }
       ##When_a_progress_has_been_achieved
@@ -388,65 +392,66 @@ Calibration_Michel <- function(InputsModel, RunOptions, InputsCrit, CalibOptions
         OldParamOptimT <- NewParamOptimT
         NewParamOptimT <- matrix(CandidatesParamT[iNewOptim, 1:NParam], nrow = 1)
       }
-
+      
     }
     
-
+    
     ##Results_archiving_______________________________________________________
     NewParamOptimR       <- FUN_TRANSFO(NewParamOptimT, "TR")
     HistParamR[ITER+1, ] <- NewParamOptimR
     HistParamT[ITER+1, ] <- NewParamOptimT
     HistCrit[ITER+1, ]   <- CritOptim
     ### if (verbose) { cat(paste("\t     Iter ",formatC(ITER,format="d",width=3), "    Crit ",formatC(CritOptim,format="f",digits=4), "    Pace ",formatC(Pace,format="f",digits=4), "\n",sep=""))}
-
-
-
-    } ##END_LOOP_ITER_________________________________________________________
-    ITER <- ITER-1
     
-
-    ##Case_when_the_starting_parameter_set_remains_the_best_solution__________
-    if (CritOptim == CritStart & verbose) { 
-      message("\t No progress achieved")
-    }
     
-    ##End_of_Steepest_Descent_Local_Search____________________________________
-    ParamFinalR <- NewParamOptimR
-    ParamFinalT <- NewParamOptimT
-    CritFinal   <- CritOptim
-    NIter       <- 1 + ITER
-    if (verbose) { 
-      message(sprintf("\t Calibration completed (%s iterations, %s runs)", NIter, NRuns))
-      message("\t     Param = ", paste(sprintf("%8.3f", ParamFinalR), collapse = " , "))
-      message(sprintf("\t     Crit %-12s = %.4f", CritName, CritFinal*Multiplier))
-    }
-    ##Results_archiving_______________________________________________________
-  	HistParamR <- cbind(HistParamR[1:NIter, ])
-  	colnames(HistParamR) <- paste0("Param", 1:NParam)
-  	HistParamT <- cbind(HistParamT[1:NIter, ])
-  	colnames(HistParamT) <- paste0("Param", 1:NParam)
-	  HistCrit   <- cbind(HistCrit[1:NIter, ])
-	  ###colnames(HistCrit) <- paste("HistCrit")
-
-    BoolCrit_Actual <- InputsCrit$BoolCrit
-	  BoolCrit_Actual[OutputsCrit$Ind_notcomputed] <- FALSE
-    MatBoolCrit <- cbind(InputsCrit$BoolCrit, BoolCrit_Actual)
-    colnames(MatBoolCrit) <- c("BoolCrit_Requested", "BoolCrit_Actual")
-
-
-##_____Output______________________________________________________________________________
-    OutputsCalib <- list(ParamFinalR = as.double(ParamFinalR), CritFinal = CritFinal*Multiplier,
-                         NIter = NIter, NRuns = NRuns,
-                         HistParamR = HistParamR, HistCrit = HistCrit*Multiplier, MatBoolCrit = MatBoolCrit,
-                         CritName = CritName, CritBestValue = CritBestValue)
-    class(OutputsCalib) <- c("OutputsCalib", "HBAN")
-    return(OutputsCalib)
-
-
-
+    
+  } ##END_LOOP_ITER_________________________________________________________
+  ITER <- ITER - 1
+  
+  
+  ##Case_when_the_starting_parameter_set_remains_the_best_solution__________
+  if (CritOptim == CritStart & verbose) { 
+    message("\t No progress achieved")
+  }
+  
+  ##End_of_Steepest_Descent_Local_Search____________________________________
+  ParamFinalR <- NewParamOptimR
+  ParamFinalT <- NewParamOptimT
+  CritFinal   <- CritOptim
+  NIter       <- 1 + ITER
+  if (verbose) { 
+    message(sprintf("\t Calibration completed (%s iterations, %s runs)", NIter, NRuns))
+    message("\t     Param = ", paste(sprintf("%8.3f", ParamFinalR), collapse = " , "))
+    message(sprintf("\t     Crit %-12s = %.4f", CritName, CritFinal * Multiplier))
+  }
+  ##Results_archiving_______________________________________________________
+  HistParamR <- cbind(HistParamR[1:NIter, ])
+  colnames(HistParamR) <- paste0("Param", 1:NParam)
+  HistParamT <- cbind(HistParamT[1:NIter, ])
+  colnames(HistParamT) <- paste0("Param", 1:NParam)
+  HistCrit   <- cbind(HistCrit[1:NIter, ])
+  ###colnames(HistCrit) <- paste("HistCrit")
+  
+  BoolCrit_Actual <- InputsCrit$BoolCrit
+  BoolCrit_Actual[OutputsCrit$Ind_notcomputed] <- FALSE
+  MatBoolCrit <- cbind(InputsCrit$BoolCrit, BoolCrit_Actual)
+  colnames(MatBoolCrit) <- c("BoolCrit_Requested", "BoolCrit_Actual")
+  
+  
+  ##_____Output______________________________________________________________________________
+  OutputsCalib <- list(ParamFinalR = as.double(ParamFinalR), CritFinal = CritFinal * Multiplier,
+                       NIter = NIter, NRuns = NRuns,
+                       HistParamR = HistParamR, HistCrit = HistCrit * Multiplier,
+                       MatBoolCrit = MatBoolCrit,
+                       CritName = CritName, CritBestValue = CritBestValue)
+  class(OutputsCalib) <- c("OutputsCalib", "HBAN")
+  return(OutputsCalib)
+  
+  
+  
 }
 
 
 
-  
+