diff --git a/tests/identification/BrockMirman/BrockMirman.mod b/tests/identification/BrockMirman/BrockMirman.mod
index dfb56bd7d5d489125e2ab88ecb4244acc261feb8..46b76aa6167200e4e8e3216ea8af8c2e685719c5 100644
--- a/tests/identification/BrockMirman/BrockMirman.mod
+++ b/tests/identification/BrockMirman/BrockMirman.mod
@@ -65,8 +65,42 @@ steady; % compute steady state given the starting values
 resid;  % check the starting values for the steady state
 check;  % check Blanchard & Khan rank condition
 
+@#define CORRFLAG = 1
+
 @#ifdef kronflag
-identification(ar=3, useautocorr=1, nodisplay, nograph, parameter_set=calibration, analytic_derivation_mode=@{kronflag});
+identification(ar=3, useautocorr=@{CORRFLAG}, nodisplay, nograph, parameter_set=calibration, analytic_derivation_mode=@{kronflag},tol_rank=1e-8);
 @#else
-identification(ar=3, useautocorr=1, nodisplay, nograph, parameter_set=calibration, analytic_derivation_mode=0);
+identification(ar=3, useautocorr=@{CORRFLAG}, nodisplay, nograph, parameter_set=calibration, analytic_derivation_mode=0, tol_rank=1e-8);
 @#endif
+
+% Unit test for correct identification results
+load('BrockMirman/identification/BrockMirman_Current_params_identif.mat','ide_moments_point', 'ide_spectrum_point', 'ide_minimal_point', 'ide_reducedform_point')
+pause(1);
+chk.ind0       = [1 1 1 1 1];
+chk.indno      = [1 0 0 0 1];
+chk.jweak      = [1 0 0 0 1];
+chk.jweak_pair = [0 0 0 0 0 0 0 0 0 0 1 0 0 0 0];
+for strVars = {'ind0' 'indno' 'jweak' 'jweak_pair'}
+    if ~isequal(ide_moments_point.(strVars{:}) , chk.(strVars{:}))
+        disp('dMoments:')
+        disp(ide_moments_point.dMOMENTS);
+        disp(strVars{:})
+        disp(ide_moments_point.(strVars{:}));
+        error('identification based on moments is wrong for %s',strVars{:})
+    end
+    if ~isequal(ide_spectrum_point.(strVars{:}) , chk.(strVars{:}))
+        disp('dSPECTRUM');
+        disp(ide_spectrum_point.dSPECTRUM);
+        disp(strVars{:})
+        disp(ide_spectrum_point.(strVars{:}));
+        error('identification based on spectrum is wrong for %s',strVars{:})
+    end
+    if ~isequal(ide_minimal_point.(strVars{:}) , chk.(strVars{:}))
+        disp('dMINIMAL')
+        disp(ide_minimal_point.dMINIMAL);
+        disp(strVars{:})
+        disp(ide_minimal_point.(strVars{:}));
+        error('identification based on minimal system is wrong for %s',strVars{:})
+    end
+end
+
diff --git a/tests/identification/kim/kim2.mod b/tests/identification/kim/kim2.mod
index 5e7750faea89cbd78da23b7e868ec6620d37cd32..0d9c707c30414fe0e8cc2d2b00096850b8dcc28d 100644
--- a/tests/identification/kim/kim2.mod
+++ b/tests/identification/kim/kim2.mod
@@ -85,7 +85,7 @@ varobs c i;
    MATLAB crashes, most likely due to an internal bug */
 if isoctave || ~matlab_ver_less_than('7.10')
 
-identification(advanced=1,max_dim_cova_group=3);
+identification(advanced=1,max_dim_cova_group=3,tol_rank=1e-8);
 //varobs c i lam; //to check if observing lam identifies phi and theta
 //identification(ar=1,advanced=1,max_dim_cova_group=3,prior_mc=250);
 //identification(prior_mc=100);
@@ -96,6 +96,37 @@ if store_options_ident.analytic_derivation~=1 && store_options_ident.analytic_de
     error('the steady state file changed parameters and we should switch to numerical derivatives for the steady state, i.e. analytic_derivation_mode=-2')
 end
 
+% Unit test for correct identification results
+load('kim2/identification/kim2_prior_mean_identif.mat','ide_moments_point', 'ide_spectrum_point', 'ide_minimal_point', 'ide_reducedform_point')
+pause(1);
+chk.ind0       = [1 1 1 0];
+chk.indno      = [0 0 0 1; 0 1 1 0];
+chk.jweak      = [0 1 1 0];
+chk.jweak_pair = [0 0 0 0 1 0 0 0 0 0];
+for strVars = {'ind0' 'indno' 'jweak' 'jweak_pair'}
+    if ~isequal(ide_moments_point.(strVars{:}) , chk.(strVars{:}))
+        disp('dMoments:')
+        disp(ide_moments_point.dMOMENTS);
+        disp(strVars{:})
+        disp(ide_moments_point.(strVars{:}));
+        error('identification based on moments is wrong for %s',strVars{:})
+    end
+    if ~isequal(ide_spectrum_point.(strVars{:}) , chk.(strVars{:}))
+        disp('dSPECTRUM');
+        disp(ide_spectrum_point.dSPECTRUM);
+        disp(strVars{:})
+        disp(ide_spectrum_point.(strVars{:}));
+        error('identification based on spectrum is wrong for %s',strVars{:})
+    end
+    if ~isequal(ide_minimal_point.(strVars{:}) , chk.(strVars{:}))
+        disp('dMINIMAL')
+        disp(ide_minimal_point.dMINIMAL);
+        disp(strVars{:})
+        disp(ide_minimal_point.(strVars{:}));
+        error('identification based on minimal system is wrong for %s',strVars{:})
+    end
+end
+
 % Integration test if identification works without priors
 estim_params_=[]; 
 identification(advanced=1,max_dim_cova_group=3);