diff --git a/extreme_fit/model/abstract_model.py b/extreme_fit/model/abstract_model.py
index 9aed76a7714e6d07122cd95b6f7c9dc7db1b50a5..ff4c43c1ce25869cb7bac632e550c2ca1575a8ae 100644
--- a/extreme_fit/model/abstract_model.py
+++ b/extreme_fit/model/abstract_model.py
@@ -8,7 +8,7 @@ class AbstractModel(object):
 
     @property
     def params_start_fit(self) -> dict:
-        return self.merge_params(default_params=self.default_params, input_params=self.user_params_start_fit)
+        return self.default_params.copy()
 
     @property
     def params_sample(self) -> dict:
diff --git a/extreme_fit/model/margin_model/linear_margin_model/abstract_temporal_linear_margin_model.py b/extreme_fit/model/margin_model/linear_margin_model/abstract_temporal_linear_margin_model.py
index 831ae8a958326146be74936e77bcd56f7354478c..f418032c9231b6b838db5d3f7218af4926a7a8bf 100644
--- a/extreme_fit/model/margin_model/linear_margin_model/abstract_temporal_linear_margin_model.py
+++ b/extreme_fit/model/margin_model/linear_margin_model/abstract_temporal_linear_margin_model.py
@@ -57,7 +57,7 @@ class AbstractTemporalLinearMarginModel(LinearMarginModel):
 
     def ismev_gev_fit(self, x, df_coordinates_temp) -> ResultFromIsmev:
         y = df_coordinates_temp.values
-        res = safe_run_r_estimator(function=r('gev.fit'), use_start=self.use_start_value,
+        res = safe_run_r_estimator(function=r('gev.fit'),
                                    xdat=x, y=y, mul=self.mul,
                                    sigl=self.sigl, shl=self.shl)
         return ResultFromIsmev(res, self.margin_function_start_fit.param_name_to_dims)
diff --git a/extreme_fit/model/margin_model/parametric_margin_model.py b/extreme_fit/model/margin_model/parametric_margin_model.py
index b27eeb14f6e6439c4a7d4db85702a674865dfa08..2e33984c3adcae59f09b0f56157eae6054656650 100644
--- a/extreme_fit/model/margin_model/parametric_margin_model.py
+++ b/extreme_fit/model/margin_model/parametric_margin_model.py
@@ -6,11 +6,11 @@ import pandas as pd
 from extreme_fit.distribution.gev.gev_params import GevParams
 from extreme_fit.function.margin_function.parametric_margin_function import \
     ParametricMarginFunction
+from extreme_fit.model.margin_model.abstract_margin_model import AbstractMarginModel
 from extreme_fit.model.margin_model.utils import MarginFitMethod
 from extreme_fit.model.result_from_model_fit.result_from_spatial_extreme import ResultFromSpatialExtreme
-from extreme_fit.model.margin_model.abstract_margin_model import AbstractMarginModel
-from extreme_fit.model.utils import safe_run_r_estimator, r, get_coord, \
-    get_margin_formula_spatial_extreme
+from extreme_fit.model.utils import r, get_coord, \
+    get_margin_formula_spatial_extreme, safe_run_r_estimator
 from spatio_temporal_dataset.coordinates.abstract_coordinates import AbstractCoordinates
 
 
@@ -45,7 +45,8 @@ class ParametricMarginModel(AbstractMarginModel, ABC):
         fit_params['temp.cov'] = get_coord(df_coordinates=df_coordinates_temp)
         # Start parameters
         coef_dict = self.margin_function_start_fit.coef_dict
-        fit_params['start'] = r.list(**coef_dict)
-        res = safe_run_r_estimator(function=r.fitspatgev, use_start=self.use_start_value, data=data,
+        # fit_params['start'] = r.list(**coef_dict)
+        res = safe_run_r_estimator(function=r.fitspatgev, data=data,
+                                   start_dict=coef_dict,
                                    covariables=covariables, **fit_params)
         return ResultFromSpatialExtreme(res)
diff --git a/extreme_fit/model/max_stable_model/abstract_max_stable_model.py b/extreme_fit/model/max_stable_model/abstract_max_stable_model.py
index d1942525fc617270ca395e20f33ef2b36b9f06ad..69f5e9cbda4639319a98d76b8dc9c065bfa0c95e 100644
--- a/extreme_fit/model/max_stable_model/abstract_max_stable_model.py
+++ b/extreme_fit/model/max_stable_model/abstract_max_stable_model.py
@@ -7,8 +7,8 @@ from rpy2.rinterface._rinterface import RRuntimeError
 
 from extreme_fit.model.abstract_model import AbstractModel
 from extreme_fit.model.result_from_model_fit.result_from_spatial_extreme import ResultFromSpatialExtreme
-from extreme_fit.model.utils import r, safe_run_r_estimator, get_coord, \
-    get_margin_formula_spatial_extreme, SafeRunException
+from extreme_fit.model.utils import r, get_coord, \
+    get_margin_formula_spatial_extreme, SafeRunException, safe_run_r_estimator
 from spatio_temporal_dataset.coordinates.abstract_coordinates import AbstractCoordinates
 
 
@@ -58,7 +58,6 @@ class AbstractMaxStableModel(AbstractModel):
             fit_params.update(margin_formulas)
         if fitmaxstab_with_one_dimensional_data:
             fit_params['iso'] = True
-        fit_params['start'] = r.list(**start_dict)
         fit_params['fit.marge'] = fit_marge
 
         # Add some temporal covariates
@@ -69,7 +68,8 @@ class AbstractMaxStableModel(AbstractModel):
             fit_params['temp.cov'] = get_coord(df_coordinates_temp)
 
         # Run the fitmaxstab in R
-        res = safe_run_r_estimator(function=r.fitmaxstab, use_start=self.use_start_value, data=data, coord=coord,
+        res = safe_run_r_estimator(function=r.fitmaxstab, data=data, coord=coord,
+                                   start_dict=start_dict,
                                    **fit_params)
         return ResultFromSpatialExtreme(res)
 
diff --git a/extreme_fit/model/max_stable_model/max_stable_models.py b/extreme_fit/model/max_stable_model/max_stable_models.py
index e0a973cc47c624e26c8498d3d517f8109dd801eb..bcc3ad8332b1bdb4de97a9f0003e50bcad8e094b 100644
--- a/extreme_fit/model/max_stable_model/max_stable_models.py
+++ b/extreme_fit/model/max_stable_model/max_stable_models.py
@@ -34,6 +34,7 @@ class BrownResnick(AbstractMaxStableModel):
             'smooth': 0.5,
         }
 
+
 class Schlather(AbstractMaxStableModelWithCovarianceFunction):
 
     def __init__(self, *args, **kwargs):
diff --git a/extreme_fit/model/utils.py b/extreme_fit/model/utils.py
index 7de527c0ed567c5799e02a22aac46b6ff7dac6c0..bec57774459a8352cb31cecba6351bc374686a78 100644
--- a/extreme_fit/model/utils.py
+++ b/extreme_fit/model/utils.py
@@ -1,3 +1,4 @@
+import copy
 import io
 
 import os.path as op
@@ -78,7 +79,23 @@ class SafeRunException(Exception):
     pass
 
 
-def safe_run_r_estimator(function, data=None, use_start=False, max_ratio_between_two_extremes_values=10, maxit=1000000,
+def safe_run_r_estimator(function, data=None, start_dict=None, max_ratio_between_two_extremes_values=10, maxit=1000000,
+                         **parameters) -> robjects.ListVector:
+    try:
+        return _safe_run_r_estimator(function, data, max_ratio_between_two_extremes_values, maxit, **parameters)
+    except SafeRunException as e:
+        if start_dict is not None:
+            for _ in range(5):
+                parameters['start'] = r.list(**start_dict)
+                try:
+                    return _safe_run_r_estimator(function, data, max_ratio_between_two_extremes_values, maxit, **parameters)
+                except Exception:
+                    continue
+        else:
+            raise e
+
+
+def _safe_run_r_estimator(function, data=None, max_ratio_between_two_extremes_values=10, maxit=1000000,
                          **parameters) -> robjects.ListVector:
     if OptimizationConstants.USE_MAXIT:
         # Add optimization parameters
@@ -107,25 +124,18 @@ def safe_run_r_estimator(function, data=None, use_start=False, max_ratio_between
                 warnings.warn(msg, WarningTooMuchZeroValues)
         # Add data to the parameters
         parameters['data'] = data
-    # First run without using start value
-    # Then if it crashes, use start value
+
     run_successful = False
     res = None
     f = io.StringIO()
     # Warning print will not work in this part
     with redirect_stdout(f):
         while not run_successful:
-            current_parameter = parameters.copy()
-            if not use_start and 'start' in current_parameter:
-                current_parameter.pop('start')
             try:
-                res = function(**current_parameter)  # type:
+                res = function(**parameters)  # type:
                 run_successful = True
             except (RRuntimeError, RRuntimeWarning) as e:
-                if not use_start:
-                    use_start = True
-                    continue
-                elif isinstance(e, RRuntimeError):
+                if isinstance(e, RRuntimeError):
                     raise SafeRunException('Some R exception have been launched at RunTime: \n {}'.format(e.__repr__()))
                 if isinstance(e, RRuntimeWarning):
                     warnings.warn(e.__repr__(), WarningWhileRunningR)
diff --git a/test/test_extreme_fit/test_estimator/test_max_stable_estimators.py b/test/test_extreme_fit/test_estimator/test_max_stable_estimators.py
index 0f6326745eb2f559d52c784641b71f8d823cb0fd..03e44b0a8e706d92d517bdd9c921f6fff650608e 100644
--- a/test/test_extreme_fit/test_estimator/test_max_stable_estimators.py
+++ b/test/test_extreme_fit/test_estimator/test_max_stable_estimators.py
@@ -67,8 +67,8 @@ class TestMaxStableEstimatorGaussFor3DCoordinates(TestMaxStableEstimators):
         self.max_stable_models = load_test_max_stable_models()[:1]
 
     def test_max_stable_estimators(self):
-        with self.assertRaises(SafeRunException):
-            self.fit_max_stable_estimator_for_all_coordinates()
+        self.fit_max_stable_estimator_for_all_coordinates()
+        self.assertTrue(True)
 
 
 if __name__ == '__main__':