diff --git a/extreme_fit/distribution/gumbel/gnfit_fixed.R b/extreme_fit/distribution/gumbel/gnfit_fixed.R
new file mode 100644
index 0000000000000000000000000000000000000000..6822300aa8717bbb9ac3c54a01f605b84faf0bed
--- /dev/null
+++ b/extreme_fit/distribution/gumbel/gnfit_fixed.R
@@ -0,0 +1,131 @@
+# Title     : TODO
+# Objective : TODO
+# Created by: erwan
+# Created on: 15/05/2020
+##
+## Exported symobls in package `gnFit`
+##
+
+## Exported package methods
+
+gnfit_fixed <- function (dat, dist, df = NULL, pr = NULL, threshold = NULL)
+{
+    dat <- as.numeric(dat)
+    x <- NULL
+    z <- list()
+    op <- par(mfrow = c(1, 2))
+    if (is.null(pr)) {
+        if (dist == "gev" | dist == "gpd")
+            stop("Enter Parameters!")
+        else if (dist == "t") {
+            if (df > 2) {
+                loc <- mean(dat)
+                sc <- sqrt((df - 2) * var(dat)/df)
+                xdat <- (dat - loc)/sc
+                prob <- pt(xdat, df)
+            }
+            else stop("DF must be > 2")
+        }
+        else if (dist == "gum") {
+            sc <- sqrt(6 * var(dat)/pi^2)
+            loc <- mean(dat) - 0.577 * sc
+            pr <- c(loc, sc, 0)
+            prob <- gevf(pr, dat)
+        }
+        else {
+            loc <- mean(dat)
+            ifelse(dist == "norm", sc <- sd(dat), NA)
+            ifelse(dist == "laplace", sc <- sqrt(var(dat)/2),
+                NA)
+            ifelse(dist == "logis", sc <- sqrt(3 * var(dat)/pi^2),
+                NA)
+            prob <- get(paste0("p", dist))(dat, loc, sc)
+        }
+    }
+    else {
+        if (dist == "gev") {
+            prob <- gevf(pr, dat)
+        }
+        else if (dist == "gum") {
+            pr[3] <- 0
+            prob <- gevf(pr, dat)
+        }
+        else if (dist == "gpd")
+            if (!is.null(threshold)) {
+                u <- threshold
+                dat <- dat[dat > u]
+                prob <- gpdf(pr, u, dat)
+            }
+            else stop("threshold is missing!")
+    }
+    n <- length(dat)
+    k <- seq(1:n)
+    qnor <- qnorm(sort(prob))
+    pnor <- pnorm((qnor - mean(qnor))/sd(qnor))
+    w <- round((sum((pnor - (2 * k - 1)/(2 * n))^2) + 1/(12 *
+        n)) * (1 + 0.5/n), 4)
+    if (w < 0.0275) {
+        pval <- 1 - exp(-13.953 + 775.5 * w - 12542.61 * w^2)
+    }
+    else if (w < 0.051) {
+        pval <- 1 - exp(-5.903 + 179.546 * w - 1515.29 * w^2)
+    }
+    else if (w < 0.092) {
+        pval <- exp(0.886 - 31.62 * w + 10.897 * w^2)
+    }
+    else if (w < 1.1) {
+        pval <- exp(1.111 - 34.242 * w + 12.832 * w^2)
+    }
+    else {
+        warning("p-value is smaller than 7.37e-10")
+    }
+    z$Wpval <- pval
+    A <- (-n - sum((2 * k - 1) * log(pnor) + (2 * n + 1 - 2 *
+        k) * log(1 - pnor))/n) * (1 + 0.75/n + 2.25/n^2)
+    A <- round((1 + 0.75/n + 2.25/n^2) * A, 4)
+    if (A < 0.2) {
+        pval <- 1 - exp(-13.436 + 101.14 * A - 223.73 * A^2)
+    }
+    else if (A < 0.34) {
+        pval <- 1 - exp(-8.318 + 42.796 * A - 59.938 * A^2)
+    }
+    else if (A < 0.6) {
+        pval <- exp(0.9177 - 4.279 * A - 1.38 * A^2)
+    }
+    else if (A < 10) {
+        pval <- exp(1.2937 - 5.709 * A + 0.0186 * A^2)
+    }
+    else {
+        warning("p-value is smaller than 7.37e-10")
+    }
+    z$Apval <- pval
+    z$Cram <- w
+    z$Ander <- A
+    invisible(z)
+}
+
+
+
+
+## Package Data
+
+# none
+
+
+## Package Info
+
+.skeleton_package_title = "Goodness of Fit Test for Continuous Distribution Functions"
+
+.skeleton_package_version = "0.2.0"
+
+.skeleton_package_depends = ""
+
+.skeleton_package_imports = "ismev,rmutil"
+
+
+## Internal
+
+.skeleton_version = 5
+
+
+## EOF
diff --git a/extreme_fit/distribution/gumbel/gumbel_gof.R b/extreme_fit/distribution/gumbel/gumbel_gof.R
index 847a8246b533c52f63f54a5f429477b63fb2b257..69c6924acfaf6cfe17a2e93518e65df6791b6996 100644
--- a/extreme_fit/distribution/gumbel/gumbel_gof.R
+++ b/extreme_fit/distribution/gumbel/gumbel_gof.R
@@ -4,9 +4,10 @@
 # Created on: 15/05/2020
 # library(rmutil)
 library(evd)
-library(gnFit)
+library(ismev)
+source("gnfit_fixed.R")
 data = rgumbel(10)
-res = gnfit(data, "gum")
+res = gnfit_fixed(data, "gum")
 print(res)
 # r = rnorm(0)
 # disp(r)
diff --git a/extreme_fit/distribution/gumbel/gumbel_gof.py b/extreme_fit/distribution/gumbel/gumbel_gof.py
index 39aded04c91523a62ce8825eda9a08be0e2894f4..2e4ba56cd15f772774d441fde9df1d9f1c0adb63 100644
--- a/extreme_fit/distribution/gumbel/gumbel_gof.py
+++ b/extreme_fit/distribution/gumbel/gumbel_gof.py
@@ -1,3 +1,6 @@
+import io
+from contextlib import redirect_stdout
+
 import numpy as np
 
 from extreme_fit.model.result_from_model_fit.abstract_result_from_model_fit import AbstractResultFromModelFit
@@ -5,11 +8,11 @@ from extreme_fit.model.utils import r
 
 
 def cramer_von_mises_and_anderson_darling_tests_pvalues_for_gumbel_distribution(data):
-    res = r.gnfit(data, "gum")
+    res = r.gnfit_fixed(data, "gum")
     res = AbstractResultFromModelFit.get_python_dictionary(res)
     res = {k: np.array(v)[0] for k, v in res.items()}
     return res['Wpval'], res['Apval']
 
 
 if __name__ == '__main__':
-    cramer_von_mises_and_anderson_darling_tests_pvalues_for_gumbel_distribution(np.array([2.0, 3.0]))
+    cramer_von_mises_and_anderson_darling_tests_pvalues_for_gumbel_distribution(np.arange(50))
diff --git a/extreme_fit/model/utils.py b/extreme_fit/model/utils.py
index 968b877d8825f95960fc30a254c48b777b3adf71..0047c85fa43ed68d99b34213c1aebf06ce429045 100644
--- a/extreme_fit/model/utils.py
+++ b/extreme_fit/model/utils.py
@@ -25,15 +25,15 @@ pandas2ri.activate()
 r.library('SpatialExtremes')
 r.library('data.table')
 r.library('quantreg')
-r.library('gnFit')
 # Desactivate temporarily warnings
 default_filters = warnings.filters.copy()
 warnings.filterwarnings("ignore")
 # Load ismev
 r.library('ismev')
 # Load fevd fixed
-for filename in ['ci_fevd_fixed.R', 'fevd_fixed.R']:
-    fevd_fixed_filepath = op.join(get_root_path(), 'extreme_fit', 'distribution', 'gev', filename)
+for j, filename in enumerate(['ci_fevd_fixed.R', 'fevd_fixed.R', 'gnfit_fixed.R']):
+    folder = 'gev' if j <= 1 else "gumbel"
+    fevd_fixed_filepath = op.join(get_root_path(), 'extreme_fit', 'distribution', folder, filename)
     assert op.exists(fevd_fixed_filepath)
     r.source(fevd_fixed_filepath)
 # Reactivate warning
diff --git a/extreme_trend/abstract_gev_trend_test.py b/extreme_trend/abstract_gev_trend_test.py
index 2f79e7b32f2d52cc8105bf894550a2a3023e6bf0..feea4fd4d577ef15539bf32b302208f942a9b1d3 100644
--- a/extreme_trend/abstract_gev_trend_test.py
+++ b/extreme_trend/abstract_gev_trend_test.py
@@ -9,6 +9,8 @@ from scipy.stats.stats import KstestResult
 
 from extreme_data.eurocode_data.utils import EUROCODE_QUANTILE, YEAR_OF_INTEREST_FOR_RETURN_LEVEL
 from extreme_data.meteo_france_data.scm_models_data.crocus.crocus_variables import AbstractSnowLoadVariable
+from extreme_fit.distribution.gumbel.gumbel_gof import \
+    cramer_von_mises_and_anderson_darling_tests_pvalues_for_gumbel_distribution
 from extreme_fit.estimator.margin_estimator.utils import fitted_linear_margin_estimator
 from extreme_fit.distribution.gev.gev_params import GevParams
 from extreme_fit.model.margin_model.utils import \
@@ -72,8 +74,10 @@ class AbstractGevTrendTest(object):
         # significance_level=array([25. , 10. ,  5. ,  2.5,  1. ]))
         index_for_significance_level_5_percent = 2
         quantiles = self.compute_empirical_quantiles(estimator=self.unconstrained_estimator)
-        test_res = anderson(quantiles, dist='gumbel_r')  # type: AndersonResult
-        return test_res.statistic < test_res.critical_values[index_for_significance_level_5_percent]
+        # test_res = anderson(quantiles, dist='gumbel_r')  # type: AndersonResult
+        # return test_res.statistic < test_res.critical_values[index_for_significance_level_5_percent]
+        test = cramer_von_mises_and_anderson_darling_tests_pvalues_for_gumbel_distribution(quantiles)
+        return test[1] > self.SIGNIFICANCE_LEVEL
 
     @property
     def degree_freedom_chi2(self) -> int:
diff --git a/projects/exceeding_snow_loads/section_results/main_result_trends_and_return_levels.py b/projects/exceeding_snow_loads/section_results/main_result_trends_and_return_levels.py
index c22c2832ff1417cf7862a5e421e45662c23272f3..61a2fe2773d054ecc8cfe9bcd95f3eec28675ce0 100644
--- a/projects/exceeding_snow_loads/section_results/main_result_trends_and_return_levels.py
+++ b/projects/exceeding_snow_loads/section_results/main_result_trends_and_return_levels.py
@@ -89,8 +89,8 @@ def major_result():
     #                                  ModelSubsetForUncertainty.non_stationary_gumbel_and_gev]
     model_subsets_for_uncertainty = None
     # study_classes = [CrocusSnowLoad3Days, CrocusSnowLoad5Days, CrocusSnowLoad7Days][::-1]
-    # altitudes = paper_altitudes
-    altitudes = [900, 1800, 2700][:1]
+    altitudes = paper_altitudes
+    # altitudes = [900, 1800, 2700][:1]
     for study_class in study_classes:
         intermediate_result(altitudes, massif_names, model_subsets_for_uncertainty,
                             uncertainty_methods, study_class,
diff --git a/projects/exceeding_snow_loads/section_results/plot_selection_curves.py b/projects/exceeding_snow_loads/section_results/plot_selection_curves.py
index da02e8ecc517ba0d7993fcaa4daa3c2a6e63cdb3..fde43a425ea11db9bead800bb4748ef87e0be13a 100644
--- a/projects/exceeding_snow_loads/section_results/plot_selection_curves.py
+++ b/projects/exceeding_snow_loads/section_results/plot_selection_curves.py
@@ -20,8 +20,8 @@ def plot_selection_curves(altitude_to_visualizer: Dict[int, StudyVisualizerForNo
     ax = create_adjusted_axes(1, 1)
 
     selected_counter = merge_counter([v.selected_trend_test_class_counter for v in altitude_to_visualizer.values()])
-    selected_and_significative_counter = merge_counter([v.selected_and_significative_trend_test_class_counter for v in altitude_to_visualizer.values()])
-    # selected_and_significative_counter = merge_counter([v.selected_and_anderson_goodness_of_fit_trend_test_class_counter for v in altitude_to_visualizer.values()])
+    # selected_and_significative_counter = merge_counter([v.selected_and_significative_trend_test_class_counter for v in altitude_to_visualizer.values()])
+    selected_and_significative_counter = merge_counter([v.selected_and_anderson_goodness_of_fit_trend_test_class_counter for v in altitude_to_visualizer.values()])
     # selected_and_significative_counter = merge_counter([v.selected_and_kstest_goodness_of_fit_trend_test_class_counter for v in altitude_to_visualizer.values()])
     total_of_selected_models = sum(selected_counter.values())
     l = sorted(enumerate(visualizer.non_stationary_trend_test), key=lambda e: selected_counter[e[1]])
@@ -32,8 +32,8 @@ def plot_selection_curves(altitude_to_visualizer: Dict[int, StudyVisualizerForNo
     labels = permute(['${}$'.format(t.label) for t in visualizer.non_stationary_trend_test], permutation)
 
     print(l)
-    print(select_list)
-    print(selected_and_signifcative_list)
+    print(sum(select_list), select_list)
+    print(sum(selected_and_signifcative_list), selected_and_signifcative_list)
     # [(5, <    class 'data.trend_analysis.univariate_test.extreme_trend.trend_test_two_parameters.gev_trend_test_two_parameters.GevLocationAgainstGumbel'> ), (6, < class 'data.trend_analysis.univariate_test.extreme_trend.trend_test_two_parameters.gev_trend_test_two_parameters.GevScaleAgainstGumbel' > ), (2, < class 'data.trend_analysis.univariate_test.extreme_trend.trend_test_one_parameter.gumbel_trend_test_one_parameter.GumbelScaleTrendTest' > ), (1, < class 'data.trend_analysis.univariate_test.extreme_trend.trend_test_one_parameter.gumbel_trend_test_one_parameter.GumbelLocationTrendTest' > ), (7, < class 'data.trend_analysis.univariate_test.extreme_trend.trend_test_three_parameters.gev_trend_test_three_parameters.GevLocationAndScaleTrendTestAgainstGumbel' > ), (3, < class 'data.trend_analysis.univariate_test.extreme_trend.trend_test_two_parameters.gumbel_test_two_parameters.GumbelLocationAndScaleTrendTest' > ), (4, < class 'data.trend_analysis.univariate_test.extreme_trend.trend_test_one_parameter.gumbel_trend_test_one_parameter.GevStationaryVersusGumbel' > ), (0, < class 'data.trend_analysis.univariate_test.extreme_trend.trend_test_one_parameter.gumbel_trend_test_one_parameter.GumbelVersusGumbel' > )]
     # [32.64462809917355, 24.380165289256198, 12.396694214876034, 9.50413223140496, 9.090909090909092, 5.785123966942149, 3.71900826446281, 2.479338842975207]
     # [0, 13.223140495867769, 7.851239669421488, 8.264462809917354, 4.958677685950414, 2.479338842975207, 0.8264462809917356, 2.0661157024793386]