diff --git a/matlab/parallel/dynareParallelGetFiles.m b/matlab/parallel/dynareParallelGetFiles.m
index 2c81d8692185bd3e69f4430c28ce957dbd086d4f..0f0e29c2142c4fba0187ebd62bd0a9a302f6f4b1 100644
--- a/matlab/parallel/dynareParallelGetFiles.m
+++ b/matlab/parallel/dynareParallelGetFiles.m
@@ -6,8 +6,8 @@ function dynareParallelGetFiles(NamFileInput,PRCDir,Parallel)
 %
 % INPUTS
 %  o NamFileInput   []   ...
-%  o PRCDir         []   ... 
-%  o Parallel       []   ...  
+%  o PRCDir         []   ...
+%  o Parallel       []   ...
 %
 %  OUTPUTS
 %  None
@@ -43,9 +43,46 @@ for indPC=1:length(Parallel),
     if Parallel(indPC).Local==0,
         if ~ispc, %isunix || (~matlab_ver_less_than('7.4') && ismac),
             for jfil=1:size(NamFileInput,1),
-                %                 if ~isempty(dynareParallelDir(NamFileInput{jfil,2},[PRCDir,filesep,NamFileInput{jfil,1}],Parallel(indPC))),
-                [NonServeL NonServeR]= system(['scp ',Parallel(indPC).UserName,'@',Parallel(indPC).ComputerName,':',Parallel(indPC).RemoteDirectory,'/',PRCDir,'/',NamFileInput{jfil,1},NamFileInput{jfil,2},' ',NamFileInput{jfil,1}]);
-                %                 end
+                % if ~isempty(dynareParallelDir(NamFileInput{jfil,2},[PRCDir,filesep,NamFileInput{jfil,1}],Parallel(indPC))),
+
+                if exist('OCTAVE_VERSION') % Patch for peculiar behaviour of ls under Linux.
+                    % It is necessary to manage the jolly char '*'!
+
+                    FindAst=strfind(NamFileInput{jfil,2},'comp_status_random_walk_metropolis_hastings_core*');
+                    
+                    if isempty (FindAst)
+
+                        [NonServeL NonServeR]= system(['scp ',Parallel(indPC).UserName,'@',Parallel(indPC).ComputerName,':',Parallel(indPC).RemoteDirectory,'/',PRCDir,'/',NamFileInput{jfil,1},NamFileInput{jfil,2},' ',NamFileInput{jfil,1}]);
+
+                    else
+
+                        filenameTemp=NamFileInput{jfil,2};
+                        
+                        [NotUsed FlI]=system(['ssh ',Parallel(indPC).UserName,'@',Parallel(indPC).ComputerName,' ls ',Parallel(indPC).RemoteDirectory,'/',PRCDir,'/',filenameTemp, ' 2> OctaveStandardOutputMessage.txt']);
+                        
+                        if isempty (FlI)
+                            return
+                        end
+
+                        AstPos=strfind(filenameTemp,'.mat')-1;
+                        FiMat=findstr(FlI, '.mat');
+                        NumFileToCopy=length(FiMat);
+
+
+                        for i=1: NumFileToCopy
+                            Ni=num2str(i);
+                            filenameTemp(1,AstPos)=Ni;
+                            [NonServeL NonServeR]= system(['scp ',Parallel(indPC).UserName,'@',Parallel(indPC).ComputerName,':',Parallel(indPC).RemoteDirectory,'/',PRCDir,'/',NamFileInput{jfil,1},filenameTemp,' ',NamFileInput{jfil,1}]);
+                        end
+                    end
+
+                else
+
+                    [NonServeL NonServeR]= system(['scp ',Parallel(indPC).UserName,'@',Parallel(indPC).ComputerName,':',Parallel(indPC).RemoteDirectory,'/',PRCDir,'/',NamFileInput{jfil,1},NamFileInput{jfil,2},' ',NamFileInput{jfil,1}]);
+                end
+
+
+                % end
             end
         else
             for jfil=1:size(NamFileInput,1),
diff --git a/matlab/parallel/dynareParallelSendFiles.m b/matlab/parallel/dynareParallelSendFiles.m
index 3728ac3658ff97441053d31eeb8569e528d47e97..838499fe73d54e73f1957e785978cf243c677529 100644
--- a/matlab/parallel/dynareParallelSendFiles.m
+++ b/matlab/parallel/dynareParallelSendFiles.m
@@ -6,8 +6,8 @@ function dynareParallelSendFiles(NamFileInput,PRCDir,Parallel)
 %
 % INPUTS
 %  o NamFileInput   []   ...
-%  o PRCDir         []   ... 
-%  o Parallel       []   ...  
+%  o PRCDir         []   ...
+%  o Parallel       []   ...
 %
 %  OUTPUTS
 %  None
@@ -44,7 +44,7 @@ for indPC=1:length(Parallel),
         if ~ispc, %isunix || (~matlab_ver_less_than('7.4') && ismac),
             for jfil=1:size(NamFileInput,1),
                 if ~isempty(NamFileInput{jfil,1})
-                    system(['ssh ',Parallel(indPC).UserName,'@',Parallel(indPC).ComputerName,' mkdir -p ',Parallel(indPC).RemoteDirectory,'/',PRCDir,'/',NamFileInput{jfil,1}])
+                    [NonServeL NonServeR]=system(['ssh ',Parallel(indPC).UserName,'@',Parallel(indPC).ComputerName,' mkdir -p ',Parallel(indPC).RemoteDirectory,'/',PRCDir,'/',NamFileInput{jfil,1}]);
                 end
                 [NonServeL NonServeR]=system(['scp ',NamFileInput{jfil,1},NamFileInput{jfil,2},' ',Parallel(indPC).UserName,'@',Parallel(indPC).ComputerName,':',Parallel(indPC).RemoteDirectory,'/',PRCDir,'/',NamFileInput{jfil,1}]);
             end
@@ -52,10 +52,56 @@ for indPC=1:length(Parallel),
             for jfil=1:size(NamFileInput,1)
                 if ~isempty(NamFileInput{jfil,1})
                     if isempty(dynareParallelDir(NamFileInput{jfil,1},PRCDir,Parallel(indPC)))
-                        mkdir(['\\',Parallel(indPC).ComputerName,'\',Parallel(indPC).RemoteDrive,'$\',Parallel(indPC).RemoteDirectory,'\',PRCDir,'\',NamFileInput{jfil,1}]);
+                        
+                        if exist('OCTAVE_VERSION') % Patch for peculiar behaviour of mkdir under Windows.
+                            
+                            % It is Necessary because Octave is not able to
+                            % create two nested directory at the same time.
+                            
+                           % Remove (if present) the '/' chars. Can be easily transformed
+                           % in a function.
+                           
+                            NamFileInputTemp=NamFileInput{jfil,1};
+                            while(1)
+                                Bs=strfind(NamFileInputTemp,'/');
+                                if isempty(Bs),
+                                    break;
+                                else
+                                    NamFileInputTemp(1,Bs)='\';
+                                end
+                            end
+                            
+                            [NonServeL NonServeR]=system(['mkdir \\',Parallel(indPC).ComputerName,'\',Parallel(indPC).RemoteDrive,'$\',Parallel(indPC).RemoteDirectory,'\',PRCDir,'\',NamFileInputTemp]);
+
+                        else
+                            mkdir(['\\',Parallel(indPC).ComputerName,'\',Parallel(indPC).RemoteDrive,'$\',Parallel(indPC).RemoteDirectory,'\',PRCDir,'\',NamFileInput{jfil,1}]);
+                        end
+                    end
+                end
+                
+                if exist('OCTAVE_VERSION') % Patch for peculiar behaviour copyfile ls under Windows.
+                    
+                    % It is Necessary because Octave is not able to
+                    % use the jolly char '*' with copyfile.
+                    
+                      % Remove (if present) the '/' chars. Can be easily transformed
+                      % in a function.
+                    
+                    NamFileInputTemp=NamFileInput{jfil,1};
+                    while(1)
+                        Bs=strfind(NamFileInputTemp,'/');
+                        if isempty(Bs),
+                            break;
+                        else
+                            NamFileInputTemp(1,Bs)='\';
+                        end
                     end
+                    
+                    [NonServeS NonServeD]=system(['copy ',NamFileInputTemp, NamFileInput{jfil,2},' \\',Parallel(indPC).ComputerName,'\',Parallel(indPC).RemoteDrive,'$\',Parallel(indPC).RemoteDirectory,'\',PRCDir,'\',NamFileInputTemp]);
+                    
+                else
+                    copyfile([NamFileInput{jfil,1},NamFileInput{jfil,2}],['\\',Parallel(indPC).ComputerName,'\',Parallel(indPC).RemoteDrive,'$\',Parallel(indPC).RemoteDirectory,'\',PRCDir,'\',NamFileInput{jfil,1}]);
                 end
-                copyfile([NamFileInput{jfil,1},NamFileInput{jfil,2}],['\\',Parallel(indPC).ComputerName,'\',Parallel(indPC).RemoteDrive,'$\',Parallel(indPC).RemoteDirectory,'\',PRCDir,'\',NamFileInput{jfil,1}])
             end
         end
     end