diff --git a/srcF/sfx_main.f90 b/srcF/sfx_main.f90
index 41fb861591deb2e680703cb471ebf74a22347c18..6af7d7d3b756a8d9191fb19b795a2dc26f89ce75 100644
--- a/srcF/sfx_main.f90
+++ b/srcF/sfx_main.f90
@@ -343,16 +343,23 @@ program sfx_main
                     write(*, *) ' FAILURE! > unknown dataset [key]: ', trim(char_array2str(config_field))
                     stop
                 end if
+                !< save nmax if previously set
+                nmax = dataset%nmax
                 call set_dataset(dataset, id)
+                dataset%nmax = nmax
         
                 if (dataset%id == dataset_user) then
-                    call get_charf("dataset.filename"//C_NULL_CHAR, config_field)
-                    dataset%filename = char_array2str(config_field)
             
                     call get_float("dataset.h"//C_NULL_CHAR, dataset%h)
                     call get_float("dataset.z0_m"//C_NULL_CHAR, dataset%z0_m)
                     call get_float("dataset.z0_h"//C_NULL_CHAR, dataset%z0_h)
                 end if
+
+                call is_varname("dataset.filename"//C_NULL_CHAR, status)
+                if ((status /= 0).or.(dataset%id == dataset_user)) then
+                    call get_charf("dataset.filename"//C_NULL_CHAR, config_field)
+                    dataset%filename = char_array2str(config_field)
+                end if  
             end if
 
             call is_varname("dataset.nmax"//C_NULL_CHAR, status)