diff --git a/matlab/gsa/map_ident_.m b/matlab/gsa/map_ident_.m
index 2ac84ae80b846175ee14fdaa3d4b72dfcef6ba9f..c5f2f34cff603f6167d21eb56d5bbeafde80e899 100644
--- a/matlab/gsa/map_ident_.m
+++ b/matlab/gsa/map_ident_.m
@@ -33,8 +33,12 @@ else
 end
 
 pnames = M_.param_names(estim_params_.param_vals(:,1),:);
+    if opt_gsa.pprior,
 
 filetoload=[OutputDirectoryName '/' fname_ '_prior'];
+    else
+filetoload=[OutputDirectoryName '/' fname_ '_mc'];
+    end
 load(filetoload,'lpmat','lpmat0','istable','T','yys','nspred','nboth','nfwrd')
 if ~isempty(lpmat0),
   lpmatx=lpmat0(istable,:);
diff --git a/matlab/gsa/stab_map_.m b/matlab/gsa/stab_map_.m
index 52d15be0e64d18b3f7c5c6e29b426be0ba206ac8..a211f8bb36bf85cf8f46e7878b359b05d6654297 100644
--- a/matlab/gsa/stab_map_.m
+++ b/matlab/gsa/stab_map_.m
@@ -265,14 +265,22 @@ if fload==0,
         end
         if neighborhood_width>0,
             for j=1:nshock,
-                lpmat0(:,j) = randperm(Nsam)'./(Nsam+1); %latin hypercube
+                if opt_gsa.morris ~= 1
+                   lpmat0(:,j) = randperm(Nsam)'./(Nsam+1); %latin hypercube
+                end
                 ub=min([bounds.ub(j) xparam1(j)*(1+neighborhood_width)]);
                 lb=max([bounds.lb(j) xparam1(j)*(1-neighborhood_width)]);
                 lpmat0(:,j)=lpmat0(:,j).*(ub-lb)+lb;
             end
             for j=1:np,
-                ub=min([bounds.ub(j+nshock) xparam1(j+nshock)*(1+neighborhood_width)]);
-                lb=max([bounds.lb(j+nshock) xparam1(j+nshock)*(1-neighborhood_width)]);
+                ub=xparam1(j+nshock)*(1+sign(xparam1(j+nshock))*neighborhood_width);
+                lb=xparam1(j+nshock)*(1-sign(xparam1(j+nshock))*neighborhood_width);
+                if bounds.ub(j+nshock)>=xparam1(j) && bounds.lb(j)<=xparam1(j+nshock),
+                    ub=min([bounds.ub(j+nshock) ub]);
+                    lb=max([bounds.lb(j+nshock) lb]);
+                else
+                    fprintf('\nstab_map_:: the calibrated value of param %s for neighborhood_width sampling is outside prior bounds.\nWe allow violation of bounds for this parameter, but if this was not done on purpose, please change calibration before running neighborhood_width sampling\n', bayestopt_.name{j+nshock})
+                end
                 lpmat(:,j)=lpmat(:,j).*(ub-lb)+lb;
             end
         else
@@ -480,7 +488,7 @@ else
     end
     load(filetoload,'lpmat','lpmat0','irestriction','iunstable','istable','iindeterm','iwrong','ixun','egg','yys','nspred','nboth','nfwrd','infox')
     Nsam = size(lpmat,1);
-    if pprior==0,
+    if pprior==0 && ~isempty(options_.mode_file),
         eval(['load ' options_.mode_file '.mat;']);
     end