diff --git a/DESCRIPTION b/DESCRIPTION
index f9177051b19d633644d4333b5287e59a38116a91..0d179e0473e6af9332ae85113d46350235a6967d 100644
--- a/DESCRIPTION
+++ b/DESCRIPTION
@@ -1,7 +1,7 @@
 Package: airGR
 Type: Package
 Title: Suite of GR Hydrological Models for Precipitation-Runoff Modelling
-Version: 1.0.9.33
+Version: 1.0.9.34
 Date: 2017-09-05
 Authors@R: c(
   person("Laurent", "Coron", role = c("aut", "trl")),
diff --git a/R/CreateIniStates.R b/R/CreateIniStates.R
index af764d46a2ab0a1aeaa8a336229517108cc45104..5644dcce597e68d3bf7d12adce50d3f774f4c0fe 100644
--- a/R/CreateIniStates.R
+++ b/R/CreateIniStates.R
@@ -56,7 +56,7 @@ CreateIniStates <- function(FUN_MOD, InputsModel,
   }
   if ("CemaNeige" %in% ObjectClass &
       !inherits(InputsModel, "CemaNeige")) {
-    stop("'RunModel_CemaNeigeGR*' must be of class 'CemaNeige'")
+    stop("'InputsModel' must be of class 'CemaNeige'")
     return(NULL)
   }
   
@@ -87,7 +87,6 @@ CreateIniStates <- function(FUN_MOD, InputsModel,
       }
       UH2 <- rep(Inf, UH2n)
     }
-    
   }
   
   if ((identical(FUN_MOD, RunModel_GR5J) | identical(FUN_MOD, RunModel_CemaNeigeGR5J)) & !is.null(UH1)) {
@@ -96,7 +95,39 @@ CreateIniStates <- function(FUN_MOD, InputsModel,
     }
     UH1 <- rep(Inf, UH1n)
   }
-  
+ 
+  if ("CemaNeige" %in% ObjectClass & ! "GR" %in% ObjectClass) {
+    if (!is.null(ProdStore)) {
+      if (verbose) {
+        warning(sprintf("'%s' does not require 'ProdStore'. Values set to NA", as.character(substitute(FUN_MOD))))
+      }
+    }
+    ProdStore <- Inf
+    if (!is.null(RoutStore)) {
+      if (verbose) {
+        warning(sprintf("'%s' does not require 'RoutStore'. Values set to NA", as.character(substitute(FUN_MOD))))
+      }
+    }
+    RoutStore <- Inf
+    if (!is.null(ExpStore)) {
+      if (verbose) {
+        warning(sprintf("'%s' does not require 'ExpStore'. Values set to NA", as.character(substitute(FUN_MOD))))
+      }
+    }
+    ExpStore <- Inf
+    if (!is.null(UH1)) {
+      if (verbose) {
+        warning(sprintf("'%s' does not require 'UH1'. Values set to NA", as.character(substitute(FUN_MOD))))
+      }
+    }
+    UH1 <- rep(Inf, UH1n)
+    if (!is.null(UH2)) {
+      if (verbose) {
+        warning(sprintf("'%s' does not require 'UH2'. Values set to NA", as.character(substitute(FUN_MOD))))
+      }
+    }
+    UH2 <- rep(Inf, UH2n)
+  }
   if("CemaNeige" %in% ObjectClass &
      (is.null(GCemaNeigeLayers) | is.null(eTGCemaNeigeLayers))) {
     stop("'RunModel_CemaNeigeGR*' need values for 'GCemaNeigeLayers' and 'GCemaNeigeLayers'")
@@ -150,6 +181,7 @@ CreateIniStates <- function(FUN_MOD, InputsModel,
   
   ## check length
   if (!is.numeric(ProdStore) || length(ProdStore) != 1L) {
+    print(ProdStore)
     stop("'ProdStore' must be numeric of length one")
   }
   if (!is.numeric(RoutStore) || length(RoutStore) != 1L) {
@@ -177,52 +209,8 @@ CreateIniStates <- function(FUN_MOD, InputsModel,
     stop(sprintf("'eTGCemaNeigeLayers' must be numeric of length %i", NLayers))
   }
   
-  
-  # if ("GR" %in% ObjectClass | "CemaNeige" %in% ObjectClass) {
-  #   if ("hourly"  %in% ObjectClass) {
-  #     NState <- 3 * 24 * 20 + 7
-  #   }
-  #   if ("daily"   %in% ObjectClass) {
-  #     if (identical(FUN_MOD, RunModel_GR5J)) {
-  #       NState <-
-  #         2 * 20 + 2 * NLayers + 7
-  #     } else {
-  #       NState <- 3 * 20 + 2 * NLayers + 7
-  #     }
-  #   }
-  #   if ("monthly" %in% ObjectClass) {
-  #     NState <- 2
-  #   }
-  #   if ("yearly"  %in% ObjectClass) {
-  #     NState <- 1
-  #   }
-  # }
-  # if (!is.null(IniStates)) {
-  #   if (!is.vector(IniStates) | !is.numeric(IniStates)) {
-  #     stop("IniStates must be a vector of numeric values")
-  #     return(NULL)
-  #   }
-  #   if (length(IniStates) != NState) {
-  #     stop(paste0(
-  #       "The length of IniStates must be ",
-  #       NState,
-  #       " for the chosen FUN_MOD"
-  #     ))
-  #     return(NULL)
-  #   }
-  # } else {
-  #   IniStates <- as.double(rep(0.0, NState))
-  #   IniStates[1:3] <- NA
-  # }
-  
-  # if ("yearly"  %in% ObjectClass) {
-  #   IniStates <- c(ProdStore)
-  # }
-  # else if ("monthly"  %in% ObjectClass) {
-  #   IniStates <- c(ProdStore, RoutStore)
-  # }
-  
-  
+
+  ## format output
   IniStates <- list(Store = list(Prod = ProdStore, Rout = RoutStore, Exp = ExpStore),
                     UH = list(UH1 = UH1, UH2 = UH2),
                     CemaNeigeLayers = list(G = GCemaNeigeLayers, eTG = eTGCemaNeigeLayers))
diff --git a/R/RunModel_CemaNeige.R b/R/RunModel_CemaNeige.R
index fa4e637e70a7409c6653e59fcc962fabdd55c376..d9bdac3f0598fdc71c2849cce760e173fe3310b7 100644
--- a/R/RunModel_CemaNeige.R
+++ b/R/RunModel_CemaNeige.R
@@ -32,7 +32,7 @@ RunModel_CemaNeige <- function(InputsModel,RunOptions,Param){
 
     ##Call_DLL_CemaNeige_________________________
       for(iLayer in 1:NLayers){
-        StateStartCemaNeige <- RunOptions$IniStates[ (2*(iLayer-1)+1):(2*(iLayer-1)+2) ];
+        StateStartCemaNeige <- RunOptions$IniStates[(7+20+40) + c(iLayer, iLayer+NLayers)]
         RESULTS <- .Fortran("frun_CemaNeige",PACKAGE="airGR",
                         ##inputs
                             LInputs=as.integer(length(IndPeriod1)),                                        ### length of input and output series
@@ -52,6 +52,7 @@ RunModel_CemaNeige <- function(InputsModel,RunOptions,Param){
                          )
         RESULTS$Outputs[ round(RESULTS$Outputs ,3)==(-999.999)] <- NA;
         RESULTS$StateEnd[round(RESULTS$StateEnd,3)==(-999.999)] <- NA;
+        
 
         ##Data_storage
         CemaNeigeLayers[[iLayer]] <- lapply(seq_len(RESULTS$NOutputs), function(i) RESULTS$Outputs[IndPeriod2,i]);
@@ -60,7 +61,16 @@ RunModel_CemaNeige <- function(InputsModel,RunOptions,Param){
         rm(RESULTS); 
       } ###ENDFOR_iLayer
       names(CemaNeigeLayers) <- paste("Layer",formatC(1:NLayers,width=2,flag="0"),sep="");
-
+      
+      if (ExportStateEnd) { 
+        CemaNeigeStateEnd <- CreateIniStates(FUN_MOD = RunModel_CemaNeige, InputsModel = InputsModel,
+                                             ProdStore = NULL, RoutStore = NULL, ExpStore = NULL,
+                                             UH1 = NULL, UH2 = NULL,
+                                             GCemaNeigeLayers = CemaNeigeStateEnd[seq_len(2*NLayers)[seq_len(2*NLayers) %% 2 == 1]],
+                                             eTGCemaNeigeLayers = CemaNeigeStateEnd[seq_len(2*NLayers)[seq_len(2*NLayers) %% 2 == 0]],
+                                             verbose = FALSE)
+      }
+      
       ##Output_data_preparation
       if(ExportDatesR==FALSE & ExportStateEnd==FALSE){
         OutputsModel <- list(CemaNeigeLayers);