diff --git a/R/ErrorCrit_KGE.R b/R/ErrorCrit_KGE.R
index 03dafffa4d4e2da555612c6b0563cb64058809d8..2ac4e97da81768e17c6f8b8b07c784e2529796c6 100644
--- a/R/ErrorCrit_KGE.R
+++ b/R/ErrorCrit_KGE.R
@@ -29,7 +29,12 @@ ErrorCrit_KGE <- function(InputsCrit,OutputsModel, verbose = TRUE){
   if(InputsCrit$transfo=="sqrt"){ VarObs <- sqrt(VarObs); VarSim <- sqrt(VarSim); }
   if(InputsCrit$transfo=="log" ){ VarObs <- log(VarObs) ; VarSim <- log(VarSim) ; VarSim[VarSim      < -1E100] <- NA; }
   if(InputsCrit$transfo=="inv" ){ VarObs <- 1/VarObs    ; VarSim <- 1/VarSim    ; VarSim[abs(VarSim) > 1E+100] <- NA; }
-  if(InputsCrit$transfo=="sort"){ VarObs <- sort(VarObs); VarSim <- sort(VarSim); }
+  if(InputsCrit$transfo=="sort"){
+	VarSim[is.na(VarObs)] <- NA
+	VarSim <- sort(VarSim, na.last = TRUE)
+	VarObs <- sort(VarObs, na.last = TRUE)
+	InputsCrit$BoolCrit <- sort(InputsCrit$BoolCrit, decreasing = TRUE)
+  }
   ##TS_ignore
   TS_ignore <- !is.finite(VarObs) | !is.finite(VarSim) | !InputsCrit$BoolCrit ;
   Ind_TS_ignore <- which(TS_ignore); if(length(Ind_TS_ignore)==0){ Ind_TS_ignore <- NULL; }
diff --git a/R/ErrorCrit_KGE2.R b/R/ErrorCrit_KGE2.R
index 623c9ad025ac04895f536be36c7887b96d1815c2..eca87936575a5cb53b85c8b6da52bf66f4ee5bd2 100644
--- a/R/ErrorCrit_KGE2.R
+++ b/R/ErrorCrit_KGE2.R
@@ -29,7 +29,12 @@ ErrorCrit_KGE2 <- function(InputsCrit,OutputsModel, verbose = TRUE){
   if(InputsCrit$transfo=="sqrt"){ VarObs <- sqrt(VarObs); VarSim <- sqrt(VarSim); }
   if(InputsCrit$transfo=="log" ){ VarObs <- log(VarObs) ; VarSim <- log(VarSim) ; VarSim[VarSim      < -1E100] <- NA; }
   if(InputsCrit$transfo=="inv" ){ VarObs <- 1/VarObs    ; VarSim <- 1/VarSim    ; VarSim[abs(VarSim) > 1E+100] <- NA; }
-  if(InputsCrit$transfo=="sort"){ VarObs <- sort(VarObs); VarSim <- sort(VarSim); }
+  if(InputsCrit$transfo=="sort"){
+	VarSim[is.na(VarObs)] <- NA
+	VarSim <- sort(VarSim, na.last = TRUE)
+	VarObs <- sort(VarObs, na.last = TRUE)
+	InputsCrit$BoolCrit <- sort(InputsCrit$BoolCrit, decreasing = TRUE)
+  }
   ##TS_ignore
   TS_ignore <- !is.finite(VarObs) | !is.finite(VarSim) | !InputsCrit$BoolCrit ;
   Ind_TS_ignore <- which(TS_ignore); if(length(Ind_TS_ignore)==0){ Ind_TS_ignore <- NULL; }
diff --git a/R/ErrorCrit_NSE.R b/R/ErrorCrit_NSE.R
index 3f50b480d5af0ba7cb6cca16e65d71c3b9ef4a2f..bf719f5befa18e3424729582ca26fe9e989a9c77 100644
--- a/R/ErrorCrit_NSE.R
+++ b/R/ErrorCrit_NSE.R
@@ -29,7 +29,12 @@ ErrorCrit_NSE <- function(InputsCrit,OutputsModel, verbose = TRUE){
   if(InputsCrit$transfo=="sqrt"){ VarObs <- sqrt(VarObs); VarSim <- sqrt(VarSim); }
   if(InputsCrit$transfo=="log" ){ VarObs <- log(VarObs) ; VarSim <- log(VarSim) ; VarSim[VarSim      < -1E100] <- NA; }
   if(InputsCrit$transfo=="inv" ){ VarObs <- 1/VarObs    ; VarSim <- 1/VarSim    ; VarSim[abs(VarSim) > 1E+100] <- NA; }
-  if(InputsCrit$transfo=="sort"){ VarObs <- sort(VarObs); VarSim <- sort(VarSim); }
+  if(InputsCrit$transfo=="sort"){
+	VarSim[is.na(VarObs)] <- NA
+	VarSim <- sort(VarSim, na.last = TRUE)
+	VarObs <- sort(VarObs, na.last = TRUE)
+	InputsCrit$BoolCrit <- sort(InputsCrit$BoolCrit, decreasing = TRUE)
+  }
   ##TS_ignore
   TS_ignore <- !is.finite(VarObs) | !is.finite(VarSim) | !InputsCrit$BoolCrit ;
   Ind_TS_ignore <- which(TS_ignore); if(length(Ind_TS_ignore)==0){ Ind_TS_ignore <- NULL; }
diff --git a/R/ErrorCrit_RMSE.R b/R/ErrorCrit_RMSE.R
index 25bc5f1637f54169c344b2634fb8b87fc12f72f3..69c3729b990f5312f15f53f33a25783102855670 100644
--- a/R/ErrorCrit_RMSE.R
+++ b/R/ErrorCrit_RMSE.R
@@ -30,7 +30,12 @@ ErrorCrit_RMSE <- function(InputsCrit,OutputsModel, verbose = TRUE){
   if(InputsCrit$transfo=="sqrt"){ VarObs <- sqrt(VarObs); VarSim <- sqrt(VarSim); }
   if(InputsCrit$transfo=="log" ){ VarObs <- log(VarObs) ; VarSim <- log(VarSim) ; VarSim[VarSim      < -1E100] <- NA; }
   if(InputsCrit$transfo=="inv" ){ VarObs <- 1/VarObs    ; VarSim <- 1/VarSim    ; VarSim[abs(VarSim) > 1E+100] <- NA; }
-  if(InputsCrit$transfo=="sort"){ VarObs <- sort(VarObs); VarSim <- sort(VarSim); }
+  if(InputsCrit$transfo=="sort"){
+	VarSim[is.na(VarObs)] <- NA
+	VarSim <- sort(VarSim, na.last = TRUE)
+	VarObs <- sort(VarObs, na.last = TRUE)
+	InputsCrit$BoolCrit <- sort(InputsCrit$BoolCrit, decreasing = TRUE)
+  }
   ##TS_ignore
   TS_ignore <- !is.finite(VarObs) | !is.finite(VarSim) | !InputsCrit$BoolCrit ;
   Ind_TS_ignore <- which(TS_ignore); if(length(Ind_TS_ignore)==0){ Ind_TS_ignore <- NULL; }