diff --git a/crpptbx/AUG/aug_requests_mapping.m b/crpptbx/AUG/aug_requests_mapping.m
index 92f32ef1ea1ab630f7b29d268b6e845eca2e6b94..92a991d38293cc1906e4debe081f07ed6a8446e9 100644
--- a/crpptbx/AUG/aug_requests_mapping.m
+++ b/crpptbx/AUG/aug_requests_mapping.m
@@ -357,14 +357,14 @@ switch lower(data_request)
 		   'gdat_tmp=gdat_aug(shot,params_eff);ij=find(~isnan(gdat_tmp.data));' ...
 		    'tmp_data=interpos(gdat_tmp.t,gdat_tmp.data,-3e4);' ...
 		    'gdat_tmp.data_smooth = tmp_data;gdat_tmp.gdat_request=''vloop'';gdat_tmp.gdat_params.data_request=gdat_tmp.gdat_request;'];
- case 'volume'
+ case {'volume', 'volume_edge'}
   mapping.label = 'Volume';
   mapping.timedim = 1;
   mapping.method = 'signal';
   mapping.expression = [{'FPG'},{'Vol'},{'AUGD'}];
  case 'volume_rho'
   mapping.timedim = 2;
-  mapping.label = 'volume\_norm';
+  mapping.label = 'Volume';
   mapping.method = 'switchcase';
  case 'wmhd'
   mapping.label = 'Wmhd';
diff --git a/crpptbx/AUG/gdat_aug.m b/crpptbx/AUG/gdat_aug.m
index 0c3bc45a2abb5f9597fbe2a1c973cdda2698ef40..b86a199acd90f4482d22b198d499e292f02315a6 100644
--- a/crpptbx/AUG/gdat_aug.m
+++ b/crpptbx/AUG/gdat_aug.m
@@ -1163,13 +1163,15 @@ elseif strcmp(mapping_for_aug.method,'switchcase')
     gdat_data.x(inb_chord_core+1:inb_chord_core+inb_chord_edge,:) = gdat_data.(lower(node_child_nameeff_e)).rhopolnorm(:,iaaa);
     gdat_data.dim{1} = gdat_data.x;
     gdat_data.dimunits{1} = 'rhopolnorm';
-    gdat_data.grids_1d.rhopolnorm = gdat_data.x;
-    gdat_data.grids_1d.psi = gdat_data.(lower(node_child_nameeff)).psi;
-    gdat_data.grids_1d.psi(inb_chord_core+1:inb_chord_core+inb_chord_edge,:) = gdat_data.(lower(node_child_nameeff_e)).psi(:,iaaa);
-    gdat_data.grids_1d.rhotornorm = gdat_data.(lower(node_child_nameeff)).rhotornorm;
-    gdat_data.grids_1d.rhotornorm(inb_chord_core+1:inb_chord_core+inb_chord_edge,:) = gdat_data.(lower(node_child_nameeff_e)).rhotornorm(:,iaaa);
-    gdat_data.grids_1d.rhovolnorm = gdat_data.(lower(node_child_nameeff)).rhovolnorm;
-    gdat_data.grids_1d.rhovolnorm(inb_chord_core+1:inb_chord_core+inb_chord_edge,:) = gdat_data.(lower(node_child_nameeff_e)).rhovolnorm(:,iaaa);
+    gdat_data2 = get_grids_1d(gdat_data,2,1,gdat_params.nverbose);
+    gdat_data.grids_1d = gdat_data2.grids_1d;
+% $$$     gdat_data.grids_1d.rhopolnorm = gdat_data.x;
+% $$$     gdat_data.grids_1d.psi = gdat_data.(lower(node_child_nameeff)).psi;
+% $$$     gdat_data.grids_1d.psi(inb_chord_core+1:inb_chord_core+inb_chord_edge,:) = gdat_data.(lower(node_child_nameeff_e)).psi(:,iaaa);
+% $$$     gdat_data.grids_1d.rhotornorm = gdat_data.(lower(node_child_nameeff)).rhotornorm;
+% $$$     gdat_data.grids_1d.rhotornorm(inb_chord_core+1:inb_chord_core+inb_chord_edge,:) = gdat_data.(lower(node_child_nameeff_e)).rhotornorm(:,iaaa);
+% $$$     gdat_data.grids_1d.rhovolnorm = gdat_data.(lower(node_child_nameeff)).rhovolnorm;
+% $$$     gdat_data.grids_1d.rhovolnorm(inb_chord_core+1:inb_chord_core+inb_chord_edge,:) = gdat_data.(lower(node_child_nameeff_e)).rhovolnorm(:,iaaa);
 
     gdat_data.data_fullpath = [gdat_data.data_fullpath ' projected on equilibrium ' gdat_data.gdat_params.equil];
 
@@ -1806,6 +1808,7 @@ elseif strcmp(mapping_for_aug.method,'switchcase')
       gdat_data.dim{2} = gdat_data.t;
       gdat_data.dimunits{1} = 'rhopolnorm';
       gdat_data.dimunits{2} = 'time [s]';
+      gdat_data.volume_edge = gdat_data.vol(end,:);
       if strcmp(data_request_eff,'volume_rho')
 	gdat_data.data = gdat_data.vol;
 	gdat_data.units = Vol.units;
@@ -1826,6 +1829,8 @@ elseif strcmp(mapping_for_aug.method,'switchcase')
 	psi_lcfs(it)= psi_it(end);
 	gdat_data.x(:,it) = sqrt(abs((psi_it-psi_axis(it)) ./(psi_lcfs(it)-psi_axis(it))));
       end
+      % always provide rhotor_edge so field always exists
+      gdat_data.rhotor_edge = gdat_data.rhotor(end,:);
       if strcmp(data_request_eff,'rhotor')
 	gdat_data.data = gdat_data.rhotor;
 	gdat_data.units = 'm';
diff --git a/crpptbx/JET/gdat_jet.m b/crpptbx/JET/gdat_jet.m
index 3dfdbe7683f1bba58aaf4fbe67be5d87a32c0b3f..82bc31089e787d8a9401bc6a915421134ba8dacc 100644
--- a/crpptbx/JET/gdat_jet.m
+++ b/crpptbx/JET/gdat_jet.m
@@ -1431,6 +1431,7 @@ elseif strcmp(mapping_for_jet.method,'switchcase')
       gdat_data.b0 = interpos(b0.t,b0.data,t,-0.1);
       if strcmp(data_request_eff,'rhotor_edge')
         gdat_data.data = sqrt(phi(end,:)./pi./reshape(gdat_data.b0,1,numel(gdat_data.b0)));
+        gdat_data.rhotor_edge = gdat_data.data; % always provide rhotor_edge so field always exists
         gdat_data.dim = {t};
         gdat_data.t = gdat_data.dim{1};
         gdat_data.data_fullpath='sqrt(Phi_edge/pi/B0) from {''ppf''},{''EFIT''},{''FTOR''}';
@@ -1438,6 +1439,7 @@ elseif strcmp(mapping_for_jet.method,'switchcase')
         gdat_data.dimunits{1} = 's';
       elseif strcmp(data_request_eff,'rhotor')
         gdat_data.data = sqrt(phi./(ones(length(x),1)*reshape(gdat_data.b0,1,numel(gdat_data.b0)))./pi);
+        gdat_data.rhotor_edge = gdat_data.data(end,:);
         gdat_data.dim{1} = x;
         gdat_data.dim{2} = t;
         gdat_data.x = x;
@@ -1485,13 +1487,12 @@ elseif strcmp(mapping_for_jet.method,'switchcase')
       gdat_data.t = t;
       gdat_data.dim = [{gdat_data.x}, {gdat_data.t}];
       gdat_data.dimunits = [{'rhopol'}, {'s'}];
+      gdat_data.volume_edge = volpsi(end,:);
       switch  data_request_eff
        case 'volume_rho'
         gdat_data.data = volpsi;
-        gdat_data.volume_edge = volpsi(end,:);
        case 'rhovol'
         gdat_data.data = sqrt(volpsi./(ones(length(gdat_data.x),1)*reshape(volpsi(end,:),1,length(gdat_data.t))));
-        gdat_data.volume_edge = volpsi(end,:);
       end
      otherwise
       disp(['data_request_eff = ' data_request_eff ' not defined in this section']);
diff --git a/crpptbx/TCV/gdat_tcv.m b/crpptbx/TCV/gdat_tcv.m
index ea72c068798591e6de9ab89293965e2160a2fdfa..ee6795efd54e3a5313d69d48035bc0f27755d232 100644
--- a/crpptbx/TCV/gdat_tcv.m
+++ b/crpptbx/TCV/gdat_tcv.m
@@ -1712,6 +1712,7 @@ elseif strcmp(mapping_for_tcv.method,'switchcase')
       gdat_data.t = phi_tor.t;
       ij=find(isfinite(b0.data));
       gdat_data.b0 = interpos(b0.t(ij),b0.data(ij),gdat_data.t);
+      % always provide rhotor_edge so field always exists
       gdat_data.rhotor_edge = sqrt(phi_tor.data(end,:)./pi./reshape(gdat_data.b0,1,numel(gdat_data.b0)))';
       if strcmp(data_request_eff,'rhotor_edge')
         gdat_data.data = gdat_data.rhotor_edge;
@@ -1772,6 +1773,7 @@ elseif strcmp(mapping_for_tcv.method,'switchcase')
     if strcmp(data_request_eff,'volume')
       if length(gdat_data.dim >=2)
         gdat_data.data = tracetdi.data(end,:);
+        gdat_data.volume_edge = gdat_data.data;
         gdat_data.dim{1} = tracetdi.dim{2};
         gdat_data.dimunits{1} = tracetdi.dimunits{2};
       else
@@ -1788,11 +1790,12 @@ elseif strcmp(mapping_for_tcv.method,'switchcase')
       gdat_data.dim = tracetdi.dim;
       gdat_data.x = gdat_data.dim{1};
       gdat_data.dimunits = tracetdi.dimunits;
+      % to always have field volume_edge
+      gdat_data.volume_edge = gdat_data.data(end,:);
       if strcmp(data_request_eff,'volume_rho')
         gdat_data.request_description = 'volume(rho)';
         gdat_data.data_fullpath=['Volume(rho) from ' nodenameeff];
       elseif strcmp(data_request_eff,'rhovol')
-        gdat_data.volume_edge = gdat_data.data(end,:);
         gdat_data.data = sqrt(gdat_data.data./repmat(reshape(gdat_data.volume_edge,1,size(gdat_data.data,2)),size(gdat_data.data,1),1));
         gdat_data.data_fullpath=['sqrt(volume/volume(edge) from ' nodenameeff];
         gdat_data.request_description = 'sqrt(volume(rho)/volume(edge))';
diff --git a/crpptbx/get_grids_1d.m b/crpptbx/get_grids_1d.m
index 57d2be4f157a3262c53b50ae829869aba14557f1..fbda005d3e50b5cae3bcd4d76df8296d42ff25dd 100644
--- a/crpptbx/get_grids_1d.m
+++ b/crpptbx/get_grids_1d.m
@@ -28,16 +28,20 @@ end
 params_eff = gdat_data.gdat_params;params_eff.doplot=0;
 params_eff.data_request='rhotor_norm';
 rhotor_norm = gdat(gdat_data.shot,params_eff);
+ndim_x_rhotor = length(find(size(rhotor_norm.x)>1));
 params_eff.data_request='rhovol';
 rhovol = gdat(gdat_data.shot,params_eff);
+ndim_x_rhovol = length(find(size(rhotor_norm.x)>1));
 params_eff.data_request='psi_axis';
 psi_axis = gdat(gdat_data.shot,params_eff);
-psi0 = interpos(psi_axis.t,psi_axis.data,gdat_data.t,-0.01);
+params_eff.data_request='psi_edge';
+psi_edge = gdat(gdat_data.shot,params_eff);
+psi0_edge = interpos(63,psi_axis.t,psi_axis.data-psi_edge.data,gdat_data.t,-0.01);
 
 if (nbdim_x == 1)
-  gdat_data.grids_1d.psi = gdat_data.grids_1d.rhopolnorm.^2*reshape(psi0,1,length(psi0));
+  gdat_data.grids_1d.psi = gdat_data.grids_1d.rhopolnorm.^2*reshape(psi0_edge,1,length(psi0_edge));
 elseif (nbdim_x == 2)
-  gdat_data.grids_1d.psi = gdat_data.grids_1d.rhopolnorm.^2.*repmat(reshape(psi0,1,length(psi0)),size(gdat_data.grids_1d.rhopolnorm,1),1);
+  gdat_data.grids_1d.psi = gdat_data.grids_1d.rhopolnorm.^2.*repmat(reshape(psi0_edge,1,length(psi0_edge)),size(gdat_data.grids_1d.rhopolnorm,1),1);
 else
   if nverbose>=0; disp(['option: nbdim_x = ' numstr(nbdim_x) ' not implemented, check with O. Sauter']); end
   return
@@ -58,21 +62,37 @@ for it=1:length(gdat_data.t)
   end
   if (nbdim_x == 1)
     if length(ii)==length(gdat_data.grids_1d.rhopolnorm)
-      gdat_data.grids_1d.rhotornorm(:,it)=interpos(rhotor_norm.x,rhotor_norm.data(:,it_rt_eff),gdat_data.grids_1d.rhopolnorm);
+      if ndim_x_rhotor==1
+	gdat_data.grids_1d.rhotornorm(:,it)=interpos(-13,rhotor_norm.x,rhotor_norm.data(:,it_rt_eff),gdat_data.grids_1d.rhopolnorm);
+      else
+	gdat_data.grids_1d.rhotornorm(:,it)=interpos(-13,rhotor_norm.x(:,it_rt_eff),rhotor_norm.data(:,it_rt_eff),gdat_data.grids_1d.rhopolnorm);
+      end
       if ~isempty(rhovol.x)
-        gdat_data.grids_1d.rhovolnorm(:,it)=interpos(rhovol.x,rhovol.data(:,it_vol_eff),gdat_data.grids_1d.rhopolnorm);
+	if ndim_x_rhovol==1
+	  gdat_data.grids_1d.rhovolnorm(:,it)=interpos(-13,rhovol.x,rhovol.data(:,it_vol_eff),gdat_data.grids_1d.rhopolnorm);
+	else
+	  gdat_data.grids_1d.rhovolnorm(:,it)=interpos(-13,rhovol.x(:,it_vol_eff),rhovol.data(:,it_vol_eff),gdat_data.grids_1d.rhopolnorm);
+	end
       end
     end
   else
     if length(ii)==size(gdat_data.grids_1d.rhopolnorm,1)
-      gdat_data.grids_1d.rhotornorm(:,it)=interpos(rhotor_norm.x,rhotor_norm.data(:,it_rt_eff),gdat_data.grids_1d.rhopolnorm(:,it));
+      if ndim_x_rhotor==1
+	gdat_data.grids_1d.rhotornorm(:,it)=interpos(-13,rhotor_norm.x,rhotor_norm.data(:,it_rt_eff),gdat_data.grids_1d.rhopolnorm(:,it));
+      else
+	gdat_data.grids_1d.rhotornorm(:,it)=interpos(-13,rhotor_norm.x(:,it_rt_eff),rhotor_norm.data(:,it_rt_eff),gdat_data.grids_1d.rhopolnorm(:,it));
+      end
       if ~isempty(rhovol.x)
-        gdat_data.grids_1d.rhovolnorm(:,it)=interpos(rhovol.x,rhovol.data(:,it_vol_eff),gdat_data.grids_1d.rhopolnorm(:,it));
+	if ndim_x_rhovol==1
+	  gdat_data.grids_1d.rhovolnorm(:,it)=interpos(-13,rhovol.x,rhovol.data(:,it_vol_eff),gdat_data.grids_1d.rhopolnorm(:,it));
+	else
+	  gdat_data.grids_1d.rhovolnorm(:,it)=interpos(-13,rhovol.x(:,it_vol_eff),rhovol.data(:,it_vol_eff),gdat_data.grids_1d.rhopolnorm(:,it));
+	end
       end
     end
   end
 end
-gdat_data.grids_1d.rhotor_edge=interpos(rhotor_norm.t',rhotor_norm.rhotor_edge,gdat_data.t',-0.01);
-gdat_data.grids_1d.volume_edge=interpos(rhovol.t',rhovol.volume_edge,gdat_data.t',-0.01);
+gdat_data.grids_1d.rhotor_edge=interpos(-63,rhotor_norm.t',rhotor_norm.rhotor_edge,gdat_data.t',-0.01);
+gdat_data.grids_1d.volume_edge=interpos(-63,rhovol.t',rhovol.volume_edge,gdat_data.t',-0.01);