diff --git a/matlab/parallel/masterParallel.m b/matlab/parallel/masterParallel.m
index 6a85d6d930e36b82078c7d2a0febb61eac5d5a4a..fe43e5d235b2b5ad2ab8d9e99cbe8fdfb09d4a0e 100644
--- a/matlab/parallel/masterParallel.m
+++ b/matlab/parallel/masterParallel.m
@@ -192,7 +192,7 @@ for j=1:totCPU,
     
         
     % Creo un file che mi serve per sapere se la computazione di un
-    % blocco parallelo (una core) � terminata oppure no!
+    % blocco parallelo (una core) è terminata oppure no!
     
     fid1=fopen(['P_',fname,'_',int2str(j),'End.txt'],'w+');
     fclose(fid1);
@@ -230,7 +230,7 @@ for j=1:totCPU,
         end
     else
         
-        % Se la computazione � remota, lo creo in locale, lo copio directory remota (creata
+        % Se la computazione è remota, lo creo in locale, lo copio directory remota (creata
         % sopra) e lo cancello in locale. Lo stesso vale per gli altri
         % dati.
         save( ['slaveParallel_input',int2str(j)],'Parallel');
@@ -320,13 +320,13 @@ for j=1:totCPU,
                     end
                 end
             elseif Parallel(indPC).Local==0, % Run using network on remote machine or also on local machine.
+                if j==nCPU0+1,
+                    dynareParallelSendFiles(NamFileInput,PRCDir,Parallel(indPC));
+                end
                 dynareParallelSendFiles(['P_',fname,'_',int2str(j),'End.txt'],PRCDir,Parallel(indPC));
                 delete(['P_',fname,'_',int2str(j),'End.txt']);
                 dynareParallelSendFiles(['slaveJob',int2str(j),'.mat'],PRCDir,Parallel(indPC));
                 delete(['slaveJob',int2str(j),'.mat']);
-                if j==nCPU0+1,
-                    dynareParallelSendFiles(NamFileInput,PRCDir,Parallel(indPC));
-                end
                 if newInstance,
                     dynareParallelSendFiles(['slaveParallel_input',int2str(j),'.mat'],PRCDir,Parallel(indPC))
                     if isunix || (~matlab_ver_less_than('7.4') && ismac),
@@ -502,17 +502,17 @@ while (ForEver)
       
 end
 
-
-dynareParallelGetFiles([fname,'_output_*.mat'],PRCDir,Parallel(1:totSlaves));
+% keyboard;
 
 
 % Create return value.
 iscrash = 0;
 for j=1:totCPU,
+    indPC=min(find(nCPU>=j));
+    dynareParallelGetFiles([fname,'_output_',int2str(j),'.mat'],PRCDir,Parallel(indPC));
     load([fname,'_output_',int2str(j),'.mat'],'fOutputVar');
     delete([fname,'_output_',int2str(j),'.mat']);
     if isfield(fOutputVar,'OutputFileName'),
-        indPC=min(find(nCPU>=j));
         dynareParallelGetFiles([fOutputVar.OutputFileName],PRCDir,Parallel(indPC));
     end
     if isfield(fOutputVar,'error'),
@@ -520,6 +520,9 @@ for j=1:totCPU,
         iscrash=1;
 %         keyboard;
         disp([fOutputVar.error.message]);
+        for jstack=1:length(fOutputVar.error.stack)
+            fOutputVar.error.stack(jstack),
+        end
     else
         fOutVar(j)=fOutputVar;
     end
@@ -574,3 +577,4 @@ end
 
 
 
+