diff --git a/matlab/parallel/fParallel.m b/matlab/parallel/fParallel.m
index 9bd09d14da39b77d2419981e94b1181d6b3770dd..01dcf28aa9a37730c1adcc772b0588551d737a59 100644
--- a/matlab/parallel/fParallel.m
+++ b/matlab/parallel/fParallel.m
@@ -84,17 +84,24 @@ try,
     
     disp(['fParallel ',int2str(whoiam),' completed.'])
 catch,
-    disp(['fParallel ',int2str(whoiam),' crashed.'])
-    fOutputVar.error = lasterror;
-    save([ fname,'_output_',int2str(whoiam),'.mat'],'fOutputVar' )
-    waitbarString = fOutputVar.error.message;
-    %       waitbarTitle=['Metropolis-Hastings ',options_.parallel(ThisMatlab).ComputerName];
-    if Parallel(ThisMatlab).Local,
-        waitbarTitle='Local ';
+    theerror = lasterror;
+    if strfind(theerror.message,'Master asked to break the job')
+        fOutputVar.message = theerror;
+        save([ fname,'_output_',int2str(whoiam),'.mat'],'fOutputVar' )
+        waitbarString = theerror.message;
     else
-        waitbarTitle=[Parallel(ThisMatlab).ComputerName];
+        disp(['fParallel ',int2str(whoiam),' crashed.'])
+        fOutputVar.error = theerror;
+        save([ fname,'_output_',int2str(whoiam),'.mat'],'fOutputVar' )
+        waitbarString = theerror.message;
+        %       waitbarTitle=['Metropolis-Hastings ',options_.parallel(ThisMatlab).ComputerName];
+        if Parallel(ThisMatlab).Local,
+            waitbarTitle='Local ';
+        else
+            waitbarTitle=[Parallel(ThisMatlab).ComputerName];
+        end
+        fMessageStatus(NaN,whoiam,waitbarString, waitbarTitle, Parallel(ThisMatlab));
     end
-    fMessageStatus(NaN,whoiam,waitbarString, waitbarTitle, Parallel(ThisMatlab));
     
 end
 diary off;
diff --git a/matlab/parallel/slaveParallel.m b/matlab/parallel/slaveParallel.m
index d54b6ac30d2bc3dfe064518a8d2a3c10aade2d84..21042d068918a6eb99ab4b9b40d9c116a63f5d1b 100644
--- a/matlab/parallel/slaveParallel.m
+++ b/matlab/parallel/slaveParallel.m
@@ -143,19 +143,27 @@ while (etime(clock,t0)<1200 && ~isempty(fslave)) || ~isempty(dir(['stayalive',in
 
             disp(['Job ',fname,' on CPU ',int2str(whoiam),' completed.']);
             t0 =clock; % Re-set waiting time of 20 mins
-        catch ME
-            disp(['Job ',fname,' on CPU ',int2str(whoiam),' crashed.']);
-            fOutputVar.error = ME;
-            save([ fname,'_output_',int2str(whoiam),'.mat'],'fOutputVar' );
-            waitbarString = fOutputVar.error.message;
-            if Parallel(ThisMatlab).Local,
-                waitbarTitle='Local ';
+        catch,
+            theerror = lasterror;
+            if strfind(theerror.message,'Master asked to break the job')
+                disp(['Job ',fname,' on CPU ',int2str(whoiam),' broken from master.']);
+                fOutputVar.message = theerror;
+                save([ fname,'_output_',int2str(whoiam),'.mat'],'fOutputVar' )
+                delete(['P_',fname,'_',int2str(whoiam),'End.txt']);
             else
-                waitbarTitle=[Parallel(ThisMatlab).ComputerName];
+                disp(['Job ',fname,' on CPU ',int2str(whoiam),' crashed.']);
+                fOutputVar.error = theerror;
+                save([ fname,'_output_',int2str(whoiam),'.mat'],'fOutputVar' );
+                waitbarString = fOutputVar.error.message;
+                if Parallel(ThisMatlab).Local,
+                    waitbarTitle='Local ';
+                else
+                    waitbarTitle=[Parallel(ThisMatlab).ComputerName];
+                end
+                fMessageStatus(NaN,whoiam,waitbarString, waitbarTitle, Parallel(ThisMatlab));
+                delete(['P_',fname,'_',int2str(whoiam),'End.txt']);
+                break
             end
-            fMessageStatus(NaN,whoiam,waitbarString, waitbarTitle, Parallel(ThisMatlab));
-            delete(['P_',fname,'_',int2str(whoiam),'End.txt']);
-            break
             
         end
     end