diff --git a/matlab/D3D/gdat_d3d.m b/matlab/D3D/gdat_d3d.m
index c3b5c90df0453e60fb371d841279af6b0afd3fe1..b4b2d29e9619cbde473414edc3c4439498c076ce 100644
--- a/matlab/D3D/gdat_d3d.m
+++ b/matlab/D3D/gdat_d3d.m
@@ -875,7 +875,10 @@ elseif strcmp(mapping_for_d3d.method,'switchcase')
       %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
     case {'neint_ts'}
       if ~isfield(gdat_data.gdat_params,'source') || isempty(gdat_data.gdat_params.source) || ~isstruct(gdat_data.gdat_params.source)
-        error('requires ''ne_rho'' gdat structure as input in ''source'' option');
+        warning('requires ''ne_rho'' gdat structure as input in ''source'' option. Loading it...');
+        params_eff = gdat_data.gdat_params;
+        params_eff.data_request = 'ne_rho';
+        [gdat_data.gdat_params.source,params_nerho,error_status]=gdat_d3d(shot,params_eff);
       end
       ne_rho = gdat_data.gdat_params.source;
       % Computes R0 and V1 line integrated signal based on ne fit (so inside LCFS), provide also R(psi_ts) and Z(psi_ts) on these lines
@@ -1071,24 +1074,26 @@ elseif strcmp(mapping_for_d3d.method,'switchcase')
           rhotornorm_out_source = NaN*ones(inb_chord_source,inb_time_source);
           rhovolnorm_out_source = NaN*ones(inb_chord_source,inb_time_source);
           % constructs intervals within which a given equil is used: [time_equil(i),time_equil(i+1)]
-          time_equil=[min(gdat_data.(extra_source{i}).t(1)-0.1,equil.t(1)-0.1); 0.5.*(equil.t(1:end-1)+equil.t(2:end)) ;max(equil.t(end)+0.1,gdat_data.(extra_source{i}).t(end)+0.1)];
-          clear psi_out_core rhopolnorm_out_core rhotornorm_out_core rhovolnorm_out_core
-          for itequil=1:numel(time_equil)-1
-            rr=equil.Rmesh(:,itequil);
-            zz=equil.Zmesh(:,itequil);
-            psirz_in = equil.psi2D(:,:,itequil);
-            it_core_inequil = find(gdat_data.(extra_source{i}).t>time_equil(itequil) & gdat_data.(extra_source{i}).t<=time_equil(itequil+1));
-            if ~isempty(it_core_inequil)
-              rout_core=gdat_data.(extra_source{i}).r;
-              zout_core=gdat_data.(extra_source{i}).z;
-              psi_at_routzout = interpos2Dcartesian(rr,zz,psirz_in,rout_core,zout_core);
-              psi_out_core(:,it_core_inequil) = repmat(psi_at_routzout,1,numel(it_core_inequil));
-              rhopolnorm_out_core(:,it_core_inequil) = sqrt((psi_out_core(:,it_core_inequil)-equil.psi_axis(itequil))./(equil.psi_lcfs(itequil)-equil.psi_axis(itequil)));
-              for it_cx=1:length(it_core_inequil)
-                rhotornorm_out_core(:,it_core_inequil(it_cx)) = ...
+          if ~isempty(gdat_data.(extra_source{i}).t)
+            time_equil=[min(gdat_data.(extra_source{i}).t(1)-0.1,equil.t(1)-0.1); 0.5.*(equil.t(1:end-1)+equil.t(2:end)) ;max(equil.t(end)+0.1,gdat_data.(extra_source{i}).t(end)+0.1)];
+            clear psi_out_core rhopolnorm_out_core rhotornorm_out_core rhovolnorm_out_core
+            for itequil=1:numel(time_equil)-1
+              rr=equil.Rmesh(:,itequil);
+              zz=equil.Zmesh(:,itequil);
+              psirz_in = equil.psi2D(:,:,itequil);
+              it_core_inequil = find(gdat_data.(extra_source{i}).t>time_equil(itequil) & gdat_data.(extra_source{i}).t<=time_equil(itequil+1));
+              if ~isempty(it_core_inequil)
+                rout_core=gdat_data.(extra_source{i}).r;
+                zout_core=gdat_data.(extra_source{i}).z;
+                psi_at_routzout = interpos2Dcartesian(rr,zz,psirz_in,rout_core,zout_core);
+                psi_out_core(:,it_core_inequil) = repmat(psi_at_routzout,1,numel(it_core_inequil));
+                rhopolnorm_out_core(:,it_core_inequil) = sqrt((psi_out_core(:,it_core_inequil)-equil.psi_axis(itequil))./(equil.psi_lcfs(itequil)-equil.psi_axis(itequil)));
+                for it_cx=1:length(it_core_inequil)
+                  rhotornorm_out_core(:,it_core_inequil(it_cx)) = ...
                     interpos(equil.rhopolnorm(:,itequil),equil.rhotornorm(:,itequil),rhopolnorm_out_core(:,it_core_inequil(it_cx)),-3,[2 2],[0 1]);
-                rhovolnorm_out_core(:,it_core_inequil(it_cx)) = ...
+                  rhovolnorm_out_core(:,it_core_inequil(it_cx)) = ...
                     interpos(equil.rhopolnorm(:,itequil),equil.rhovolnorm(:,itequil),rhopolnorm_out_core(:,it_core_inequil(it_cx)),-3,[2 2],[0 1]);
+                end
               end
             end
           end