diff --git a/extreme_fit/function/param_function/linear_coef.py b/extreme_fit/function/param_function/linear_coef.py
index 0d5e9f22520a25e1ec72064978fbc1012050ec3b..2c15dbf789c663f2d1e998eff1d327f1eccf7e15 100644
--- a/extreme_fit/function/param_function/linear_coef.py
+++ b/extreme_fit/function/param_function/linear_coef.py
@@ -33,8 +33,12 @@ class LinearCoef(AbstractCoef):
                or any([coordinate_name in coefficient_name for coordinate_name in AbstractCoordinates.COORDINATES_NAMES])
         if coefficient_name == cls.INTERCEPT_NAME or coefficient_name in AbstractCoordinates.COORDINATE_SPATIAL_NAMES:
             coef_template_str = param_name + cls.COEFF_STR + '{}'
-        else:
+        elif coefficient_name == AbstractCoordinates.COORDINATE_T:
             coef_template_str = 'temp' + cls.COEFF_STR + param_name.title() + '{}'
+        elif len([c for c in AbstractCoordinates.COORDINATES_NAMES if c in coefficient_name]) >= 2:
+            coef_template_str = 'cross' + cls.COEFF_STR + param_name.title() + '{}'
+        else:
+            raise NotImplementedError
         assert cls.COEFF_STR in coef_template_str
         return coef_template_str
 
@@ -47,6 +51,10 @@ class LinearCoef(AbstractCoef):
         else:
             raise NotImplementedError
 
+    @classmethod
+    def offset_from_coefficient_name(cls, coefficient_name):
+        return 1 if coefficient_name == AbstractCoordinates.COORDINATE_X else 0
+
     @staticmethod
     def has_dependence_in_spatial_coordinates(dim_to_coefficient_name):
         return any([coefficient_name in AbstractCoordinates.COORDINATE_SPATIAL_NAMES
diff --git a/extreme_fit/function/param_function/polynomial_coef.py b/extreme_fit/function/param_function/polynomial_coef.py
index 9460556d7da2d0213d2fc37f60b93b7f2dfe3999..c306604368900fea63886bff25658484a4968a23 100644
--- a/extreme_fit/function/param_function/polynomial_coef.py
+++ b/extreme_fit/function/param_function/polynomial_coef.py
@@ -60,12 +60,12 @@ class PolynomialAllCoef(LinearCoef):
             dim_to_polynomial_coef = {}
             for dim, max_degree in list_dim_and_max_degree:
                 coefficient_name = cls.coefficient_name(dim, coordinates.dim_to_coordinate)
-                j = 1 if coefficient_name == AbstractCoordinates.COORDINATE_T else 2
+                offset = cls.offset_from_coefficient_name(coefficient_name)
                 degree_to_coef = {0: degree0}
                 for degree in range(1, max_degree + 1):
-                    coef_value = coef_dict[cls.coef_template_str(param_name, coefficient_name).format(j)]
+                    coef_key = cls.coef_template_str(param_name, coefficient_name).format(offset + degree)
+                    coef_value = coef_dict[coef_key]
                     degree_to_coef[degree] = coef_value
-                    j += 1
                 dim_to_polynomial_coef[dim] = PolynomialCoef(param_name=param_name, degree_to_coef=degree_to_coef)
         return cls(param_name=param_name, dim_to_polynomial_coef=dim_to_polynomial_coef, intercept=intercept)
 
diff --git a/extreme_fit/model/margin_model/polynomial_margin_model/utils.py b/extreme_fit/model/margin_model/polynomial_margin_model/utils.py
index 44d7971e175fa8f83fa2ea327c0de1da0c9e929b..615edc68378482bd793397c696470586365ae1a4 100644
--- a/extreme_fit/model/margin_model/polynomial_margin_model/utils.py
+++ b/extreme_fit/model/margin_model/polynomial_margin_model/utils.py
@@ -23,7 +23,7 @@ ALTITUDINAL_MODELS = [
                          NonStationaryAltitudinalLocationQuadraticCrossTermForLocation,
                          NonStationaryAltitudinalLocationLinearScaleLinearCrossTermForLocation,
                         NonStationaryAltitudinalLocationQuadraticScaleLinearCrossTermForLocation,
-                     ][:7]
+                     ][:]
 
 
 
diff --git a/extreme_fit/model/result_from_model_fit/utils.py b/extreme_fit/model/result_from_model_fit/utils.py
index fd1d9eb2cc5b0137665216ff5e03b0a6d0ced482..b0ff5edc1e605e189fab631879603c2b2d583b3e 100644
--- a/extreme_fit/model/result_from_model_fit/utils.py
+++ b/extreme_fit/model/result_from_model_fit/utils.py
@@ -36,12 +36,12 @@ def get_margin_coef_ordered_dict(param_name_to_dims, mle_values, type_for_mle="G
                 # We found (thanks to the test) that time was the first parameter when len(param_name_to_dims) == 1
                 # otherwise time is the second parameter in the order of the mle parameters
                 # inverted_dims = dims[::-1] if len(param_name_to_dims) == 1 else dims
-                for dim, max_degree in dims:
+                for dim, max_degree in dims[:]:
                     coefficient_name = LinearCoef.coefficient_name(dim, dim_to_coordinate_name)
                     coef_template = LinearCoef.coef_template_str(param_name, coefficient_name)
-                    for j in range(1, max_degree + 1):
-                        k = j if coefficient_name == AbstractCoordinates.COORDINATE_T else j + 1
-                        coef_name = coef_template.format(k)
+                    offset = LinearCoef.offset_from_coefficient_name(coefficient_name)
+                    for k in range(1, max_degree + 1):
+                        coef_name = coef_template.format(k + offset)
                         coef_dict[coef_name] = mle_values[i]
                         i += 1
     return coef_dict
diff --git a/test/test_extreme_fit/test_estimator/test_gev_spatio_temporal_extremes_mle.py b/test/test_extreme_fit/test_estimator/test_gev_spatio_temporal_extremes_mle.py
index 0d8c81e0bc10f944ce7c7abcc52c636ec58108c4..387cc3e7a8e4de2ee35294ce9b3d4fd9411ebb4b 100644
--- a/test/test_extreme_fit/test_estimator/test_gev_spatio_temporal_extremes_mle.py
+++ b/test/test_extreme_fit/test_estimator/test_gev_spatio_temporal_extremes_mle.py
@@ -4,7 +4,8 @@ from random import sample
 from extreme_data.meteo_france_data.scm_models_data.safran.safran import SafranSnowfall1Day, SafranPrecipitation1Day
 from extreme_fit.model.margin_model.polynomial_margin_model.altitudinal_models import \
     NonStationaryAltitudinalLocationQuadraticScaleLinearCrossTermForLocation, \
-    NonStationaryAltitudinalLocationQuadraticCrossTermForLocation
+    NonStationaryAltitudinalLocationQuadraticCrossTermForLocation, NonStationaryAltitudinalLocationLinear, \
+    NonStationaryAltitudinalLocationLinearCrossTermForLocation
 from extreme_fit.model.margin_model.polynomial_margin_model.utils import ALTITUDINAL_MODELS, \
     MODELS_THAT_SHOULD_RAISE_AN_ASSERTION_ERROR, VARIOUS_SPATIO_TEMPORAL_MODELS
 from extreme_fit.model.margin_model.utils import \
@@ -53,46 +54,8 @@ class TestGevTemporalQuadraticExtremesMle(unittest.TestCase):
 
     def test_altitudinal_models(self):
         for model_class in ALTITUDINAL_MODELS:
-            # print(model_class)
             self.common_test(model_class)
 
 
-# class MyTest(unittest.TestCase):
-#
-#     def setUp(self) -> None:
-#         self.study_class = SafranPrecipitation1Day
-#         self.altitudes = [900, 1200, 1500, 1800, 2100, 2400, 2700, 3000]
-#         self.massif_name = 'Aravis'
-#
-#     def get_estimator_fitted(self, model_class):
-#         studies = AltitudesStudies(self.study_class, self.altitudes, year_max=2019)
-#         two_fold_datasets_generator = TwoFoldDatasetsGenerator(studies, nb_samples=1, massif_names=[self.massif_name])
-#         model_family_name_to_model_class = {'Non stationary': [model_class]}
-#         two_fold_fit = TwoFoldFit(two_fold_datasets_generator=two_fold_datasets_generator,
-#                                   model_family_name_to_model_classes=model_family_name_to_model_class,
-#                                   fit_method=MarginFitMethod.extremes_fevd_mle)
-#         massif_fit = two_fold_fit.massif_name_to_massif_fit[self.massif_name]
-#         sample_fit = massif_fit.sample_id_to_sample_fit[0]
-#         model_fit = sample_fit.model_class_to_model_fit[model_class]  # type: TwoFoldModelFit
-#         estimator = model_fit.estimator_fold_1
-#         return estimator
-#
-#     def common_test(self, model_class):
-#         estimator = self.get_estimator_fitted(model_class)
-#         # Assert that indicators are correctly computed
-#         self.assertAlmostEqual(estimator.result_from_model_fit.nllh, estimator.nllh(split=estimator.train_split))
-#         self.assertAlmostEqual(estimator.result_from_model_fit.aic, estimator.aic(split=estimator.train_split))
-#         self.assertAlmostEqual(estimator.result_from_model_fit.bic, estimator.bic(split=estimator.train_split))
-#
-#     #
-#     #     # def test_altitudinal_models(self):
-#     #     #     for model_class in ALTITUDINAL_MODELS:
-#     #     #         self.common_test(model_class)
-#     #
-#     def test_wrong(self):
-#         self.common_test(NonStationaryAltitudinalLocationQuadraticCrossTermForLocation)
-#         # self.common_test(NonStationaryAltitudinalLocationQuadraticScaleLinearCrossTermForLocation)
-
-
 if __name__ == '__main__':
     unittest.main()