diff --git a/Source/Python/Classes/EcFlexpart.py b/Source/Python/Classes/EcFlexpart.py
index e3b3faa51ce3bdee1e6a19b195bde345c81d0693..65ba97f7e4212e4187accda307d79436bee23231 100644
--- a/Source/Python/Classes/EcFlexpart.py
+++ b/Source/Python/Classes/EcFlexpart.py
@@ -1415,7 +1415,7 @@ class EcFlexpart(object):
                               keynames=['perturbationNumber', 'date', 'time',
                                         'stepRange', 'values'],
                               keyvalues=[inumb, int(date.strftime('%Y%m%d')),
-                                         date.hour*100, 0, lsp_new_np[inumb, :, it]],
+                                         date.hour*100, 0, lsp_new_np[inumb, :, it]]
                              )
             fluxfile.set_keys(tmpfile, filemode='ab',
                               wherekeynames=['paramId'], wherekeyvalues=[143],
@@ -1478,12 +1478,9 @@ class EcFlexpart(object):
         '''
 
         gribfile = GribUtil(os.path.join(inputdir, 'rr_grib_dummy.grb'))
-
-        gribfile.copy_dummy_msg(ifile, keynames=['paramId'],
-                                keyvalues=[142], filemode='wb')
-
-        gribfile.copy_dummy_msg(ifile, keynames=['paramId'],
-                                keyvalues=[143], filemode='ab')
+        
+        gribfile.copy_dummy_msg(ifile, keynames=['paramId','paramId'],
+                                keyvalues=[142,143], filemode='wb')        
 
         return
 
@@ -1754,7 +1751,10 @@ class EcFlexpart(object):
                                                 '/OG_OROLSM__SL.*.' +
                                                 c.ppid +
                                                 '*')[0])
-            fluxfile = 'flux' + cdate[0:2] + suffix
+            if c.marsclass == 'EP':
+                fluxfile = 'flux' + suffix
+            else:
+                fluxfile = 'flux' + cdate[0:2] + suffix
             if not c.cwc:
                 flist = ['fort.15', fluxfile, 'fort.16', orolsm]
             else:
diff --git a/Source/Python/Classes/GribUtil.py b/Source/Python/Classes/GribUtil.py
index a4c7bbca6166cf6a7c9f4975bef6ca0e222cd77d..6712f354f0e7af7189b2b6db97e47c225559011f 100644
--- a/Source/Python/Classes/GribUtil.py
+++ b/Source/Python/Classes/GribUtil.py
@@ -121,8 +121,8 @@ class GribUtil(object):
         return return_list
 
 
-    def set_keys(self, fromfile, keynames, keyvalues, wherekeynames,
-                 wherekeyvalues, filemode='wb'):
+    def set_keys(self, fromfile, filemode='wb', keynames=[], keyvalues=[], 
+                 wherekeynames=[], wherekeyvalues=[]):
         '''Opens the file to read the grib messages and then write
         the selected messages (with wherekeys) to a new output file.
         Also, the keyvalues of the passed list of keynames are set.
@@ -161,34 +161,37 @@ class GribUtil(object):
             raise Exception("Give a value for each keyname!")
 
         fout = open(self.filenames, filemode)
-
-        with open(fromfile, 'rb') as fin:
+       # print(fout)
+        fin = open(fromfile, 'rb')
+       # print(fin)
+        while True:
             gid = codes_grib_new_from_file(fin)
-
+           # print('test')
+            if gid is None:
+                break            
+            
             select = True
-            i = 0
-            for wherekey in wherekeynames:
+            #print(str(codes_get(gid,'paramId')))
+            for i, wherekey in enumerate(wherekeynames):
                 if not codes_is_defined(gid, wherekey):
                     raise Exception("wherekey was not defined")
 
                 select = (select and (str(wherekeyvalues[i]) ==
                                       str(codes_get(gid, wherekey))))
-                i += 1
 
             if select:
-                i = 0
-                for key in keynames:
+                for i, key in enumerate(keynames):
                     if key == 'values':
                         codes_set_values(gid, keyvalues[i])
                     else:
                         codes_set(gid, key, keyvalues[i])
-                    i += 1
 
                 codes_write(gid, fout)
 
             codes_release(gid)
 
         fout.close()
+        fin.close()
 
         return
 
@@ -228,21 +231,24 @@ class GribUtil(object):
         if len(keynames) != len(keyvalues):
             raise Exception("Give a value for each keyname!")
 
-
         fout = open(self.filenames, filemode)
-
+        fin = open(filename_in, 'rb')
+        
         fields = 0
-
-        with open(filename_in, 'rb') as fin:
-            if fields >= 1:
+        while True:
+            if fields >= len(keyvalues):
                 fout.close()
+                fin.close()
                 return
-
+                
             gid = codes_grib_new_from_file(fin)
+            if gid is None:
+                break            
 
-            select = True
-            i = 0
-            for key in keynames:
+            for i, key in enumerate(keynames):
+                
+                select = True
+                
                 if not codes_is_defined(gid, key):
                     raise Exception("Key was not defined")
 
@@ -252,15 +258,15 @@ class GribUtil(object):
                 else:
                     select = (select and (str(keyvalues[i]) !=
                                           str(codes_get(gid, key))))
-                i += 1
-
-            if select:
-                fields = fields + 1
-                codes_write(gid, fout)
-
+                
+                if select:
+                    fields = fields + 1
+                    codes_write(gid, fout)
+                    
             codes_release(gid)
 
         fout.close()
+        fin.close()
 
         return