diff --git a/matlab/load_last_mh_history_file.m b/matlab/load_last_mh_history_file.m
index 1455861ea7028f12ef6fc92d835156728e63538c..3e54f9853e44802b97e78efc3981e7e88feb7ca8 100644
--- a/matlab/load_last_mh_history_file.m
+++ b/matlab/load_last_mh_history_file.m
@@ -1,5 +1,15 @@
 function info = load_last_mh_history_file(MetropolisFolder, ModelName)
-    
+% function info = load_last_mh_history_file(MetropolisFolder, ModelName)
+% Loads the last mh_history_file
+% Inputs:
+%   MetropolisFolder    [char]      Name of the metropolis subfolder
+%   ModelName           [char]      Name of the mod-file
+% Outputs:  
+%   info                [struct]    structure storing the MH history
+% 
+% Notes: The record structure is written to the caller workspace via an
+% assignin statement.
+
 % Copyright (C) 2013 Dynare Team
 %
 % This file is part of Dynare.
@@ -27,7 +37,7 @@ mh_history_files = dir([BaseName '_mh_history_*.mat']);
 % Consistency with older versions of Dynare.
 if isequal(length(mh_history_files),0)
     if exist([BaseName '_mh_history.mat'])
-        format_mh_history_file = 1;
+        format_mh_history_file = 1; % old Dynare format 
     else
         error(['Estimation::load_mh_file: I cannot find any mh-history file in ' MetropolisFolder '!'])
     end
@@ -35,13 +45,14 @@ else
     format_mh_history_file = 0;
 end
 
-if format_mh_history_file
+if format_mh_history_file %needed to preserve backward compatibility
     load([BaseName '_mh_history.mat']);
     record.LastLogPost = record.LastLogLiK;
     record.InitialLogPost = record.InitialLogLiK;
     record.LastSeeds = record.Seeds;
     record.AcceptanceRatio = record.AcceptationRates;
     record.InitialSeeds = NaN; % This information is forever lost...
+    record.MCMCConcludedSuccessfully = NaN; % This information is forever lost...
     record = rmfield(record,'LastLogLiK');
     record = rmfield(record,'InitialLogLiK');
     record = rmfield(record,'Seeds');
@@ -49,6 +60,10 @@ if format_mh_history_file
     save([BaseName '_mh_history_0.mat'],'record');
 else
     load([BaseName '_mh_history_' num2str(length(mh_history_files)-1) '.mat']);
+    % add fields that have later been introduced
+    if ~isfield(record,'MCMCConcludedSuccessfully')
+        record.MCMCConcludedSuccessfully = NaN; % This information is forever lost...    
+    end
 end
 
 if isequal(nargout,0)
diff --git a/matlab/metropolis_hastings_initialization.m b/matlab/metropolis_hastings_initialization.m
index 4650830e5bdec1b363933e110dbcc61449f6915c..c8e04f3bdb135a7603abc7ad30143e9d8448bdf5 100644
--- a/matlab/metropolis_hastings_initialization.m
+++ b/matlab/metropolis_hastings_initialization.m
@@ -210,6 +210,7 @@ if ~options_.load_mh_file && ~options_.mh_recover
     record.LastLogPost = zeros(nblck,1);
     record.LastFileNumber = AnticipatedNumberOfFiles ;
     record.LastLineNumber = AnticipatedNumberOfLinesInTheLastFile;
+    record.MCMCConcludedSuccessfully = 0;
     fprintf('Ok!\n');
     id = write_mh_history_file(MetropolisFolder, ModelName, record);
     disp(['Estimation::mcmc: Details about the MCMC are available in ' BaseName '_mh_history_' num2str(id) '.mat'])
@@ -234,6 +235,10 @@ elseif options_.load_mh_file && ~options_.mh_recover
     % Here we consider previous mh files (previous mh did not crash).
     disp('Estimation::mcmc: I am loading past Metropolis-Hastings simulations...')
     load_last_mh_history_file(MetropolisFolder, ModelName);
+    if ~isnan(record.MCMCConcludedSuccessfully) && ~record.MCMCConcludedSuccessfully
+        error('Estimation::mcmc: You are trying to load an MCMC that did not finish successfully. Please use mh_recover.')
+    end
+    record.MCMCConcludedSuccessfully=0; %reset indicator for this run
     mh_files = dir([ MetropolisFolder filesep ModelName '_mh*.mat']);
     if ~length(mh_files)
         error('Estimation::mcmc: I cannot find any MH file to load here!')
diff --git a/matlab/random_walk_metropolis_hastings.m b/matlab/random_walk_metropolis_hastings.m
index c5ff16c03c0c5ddad38792f0a91abe666e44f332..8f18d1d0f400bf3b69080e67313a43ab7007e5fa 100644
--- a/matlab/random_walk_metropolis_hastings.m
+++ b/matlab/random_walk_metropolis_hastings.m
@@ -163,6 +163,8 @@ end
 irun = fout(1).irun;
 NewFile = fout(1).NewFile;
 
+record.MCMCConcludedSuccessfully = 1; %set indicator for successful run
+
 update_last_mh_history_file(MetropolisFolder, ModelName, record);
 
 % Provide diagnostic output
diff --git a/matlab/update_last_mh_history_file.m b/matlab/update_last_mh_history_file.m
index 014e686a6127cbb2cfe2f368670293a3b100027d..d0c4e9ca54f1e5a3f4502e2719e6118584303366 100644
--- a/matlab/update_last_mh_history_file.m
+++ b/matlab/update_last_mh_history_file.m
@@ -1,6 +1,13 @@
 function update_last_mh_history_file(MetropolisFolder, ModelName, record)
+% function update_last_mh_history_file(MetropolisFolder, ModelName, record)
+% Updates the mh_history_file
+% Inputs:
+%   MetropolisFolder    [char]      Name of the metropolis subfolder
+%   ModelName           [char]      Name of the mod-file
+%   record              [structure] structure storing the MH history
+% Outputs:  none 
 
-% Copyright (C) 2013 Dynare Team
+% Copyright (C) 2013-2015 Dynare Team
 %
 % This file is part of Dynare.
 %
diff --git a/matlab/write_mh_history_file.m b/matlab/write_mh_history_file.m
index 9fe85ab92f7b78eaa6297500ec0217012dd78e50..00984c26cf38b9584b43a35e4f2b86d7dee4fe45 100644
--- a/matlab/write_mh_history_file.m
+++ b/matlab/write_mh_history_file.m
@@ -1,6 +1,14 @@
 function i = write_mh_history_file(MetropolisFolder, ModelName, record)
+% function i = write_mh_history_file(MetropolisFolder, ModelName, record)
+% Writes a mh_history_file to the harddisk
+% Inputs:
+%   MetropolisFolder    [char]      Name of the metropolis subfolder
+%   ModelName           [char]      Name of the mod-file
+%   record              [structure] structure storing the MH history
+% Outputs:  
+%   i                   [scalar]    number of the mh_history file
 
-% Copyright (C) 2013 Dynare Team
+% Copyright (C) 2013-2015 Dynare Team
 %
 % This file is part of Dynare.
 %