diff --git a/crpptbx/TCV/loadTCVdata.m b/crpptbx/TCV/loadTCVdata.m
index 1dbaf9dd9f310506960bdc0357fcfc05c97f3696..4af7b51a6f41eacc12d4b0207a118e35bb58cbf9 100644
--- a/crpptbx/TCV/loadTCVdata.m
+++ b/crpptbx/TCV/loadTCVdata.m
@@ -558,6 +558,14 @@ switch TCVkeywrdcase{index}
           ix=1; 
           trace.t=tracetdi.dim{2};
           disp(['assumes time array is 1D array, so x from dim{' num2str(ix) '}'])
+        elseif tracetdi.dim{1}(end)<1.1 && tracetdi.dim{2}(end)>1.1
+          ix=1; 
+          trace.t=tracetdi.dim{2};
+          disp(['assumes x array is 1D array with max <1.1'])          
+        elseif tracetdi.dim{1}(end)>1.1 && tracetdi.dim{2}(end)<1.1
+          ix=2; 
+          trace.t=tracetdi.dim{1};
+          disp(['assumes x array is 1D array with max <1.1'])          
         elseif length(size(tracetdi.dim{1}))==2 && min(size(tracetdi.dim{1}))==1 && length(size(tracetdi.dim{2}))==2 && min(size(tracetdi.dim{2}))==1
           % if both are 1D arrays, assumes time array with values having most number of digits
           ab1=num2str(tracetdi.dim{1}-fix(tracetdi.dim{1}));
@@ -626,7 +634,19 @@ switch TCVkeywrdcase{index}
     trace.std=tracestd.data';
     trace.name=[num2str(shot) ';' nodenameeff];
     % add correct dimensions
-    time=mdsdata('\results::thomson:times');
+    try
+      time=mdsdata('\results::thomson:times');
+    catch
+      warning('Problems with \results::thomson:times')
+      disp(['!!!!!!!!!!!!!!!!!!!!!!!!! cannot continue with ' TCVkeywrdcase{index}])
+      return
+    end
+    if isempty(time) || ischar(time)
+      thomsontimes=time
+      warning('!!!!!!!!!!!!!!!!!!!!!!!!!\results::thomson:times  is empty? Check')
+      disp(['!!!!!!!!!!!!!!!!!!!!!!!!! cannot continue with ' TCVkeywrdcase{index}])
+      return
+    end
     z=mdsdata('\diagz::thomson_set_up:vertical_pos');
     trace.dim=[{z};{time}];
     trace.dimunits=[{'Z [m]'} ; {'time [s]'}];
@@ -656,7 +676,19 @@ switch TCVkeywrdcase{index}
     trace.std=tracestd.data';
     trace.name=[num2str(shot) ';' nodenameeff];
     % add correct dimensions
-    time=mdsdata('\results::thomson:times');
+    try
+      time=mdsdata('\results::thomson:times');
+    catch
+      warning('Problems with \results::thomson:times')
+      disp(['!!!!!!!!!!!!!!!!!!!!!!!!! cannot continue with ' TCVkeywrdcase{index}])
+      return
+    end
+    if isempty(time) || ischar(time)
+      thomsontimes=time
+      warning('!!!!!!!!!!!!!!!!!!!!!!!!!\results::thomson:times  is empty? Check')
+      disp(['!!!!!!!!!!!!!!!!!!!!!!!!! cannot continue with ' TCVkeywrdcase{index}])
+      return
+    end
     z=mdsdata('\diagz::thomson_set_up.edge:vertical_pos');
     trace.dim=[{z};{time}];
     trace.dimunits=[{'Z [m]'} ; {'time [s]'}];
@@ -672,7 +704,19 @@ switch TCVkeywrdcase{index}
   case {'nerho','terho'}
     % ne or Te from Thomson data on rho=sqrt(psi_normalised) mesh: (rho,t)
     mdsopen(shot);
-    time=mdsdata('\results::thomson:times');
+    try
+      time=mdsdata('\results::thomson:times');
+    catch
+      warning('Problems with \results::thomson:times')
+      disp(['!!!!!!!!!!!!!!!!!!!!!!!!! cannot continue with ' TCVkeywrdcase{index}])
+      return
+    end
+    if isempty(time) || ischar(time)
+      thomsontimes=time
+      warning('!!!!!!!!!!!!!!!!!!!!!!!!!\results::thomson:times  is empty? Check')
+      disp(['!!!!!!!!!!!!!!!!!!!!!!!!! cannot continue with ' TCVkeywrdcase{index}])
+      return
+    end
     if strcmp(TCVkeywrdcase{index},'nerho')
       nodenameeff='\results::thomson:ne';
       tracetdi=tdi(nodenameeff);
@@ -721,8 +765,12 @@ switch TCVkeywrdcase{index}
     % construct rho mesh
     psi_max=tdi(['\results::thomson:psi_max' endstr]);
     psiscatvol=tdi(['\results::thomson:psiscatvol' endstr]);
-    for ir=1:length(psiscatvol.dim{2})
-      rho(ir,:)= sqrt(1.-psiscatvol.data(:,ir)./psi_max.data(:))';
+    if ~isempty(psiscatvol.data) && ~ischar(psiscatvol.data) && ~isempty(psi_max.data) && ~ischar(psi_max.data)
+      for ir=1:length(psiscatvol.dim{2})
+        rho(ir,:)= sqrt(1.-psiscatvol.data(:,ir)./psi_max.data(:))';
+      end
+    else
+      rho=NaN;
     end
     trace.dim=[{rho};{time}];
     trace.dimunits=[{'sqrt(psi)'} ; {'time [s]'}];
@@ -738,7 +786,19 @@ switch TCVkeywrdcase{index}
   case {'nerho_edge','terho_edge'}
     % ne or Te from Thomson.Edge data on rho=sqrt(psi_normalised) mesh: (rho,t)
     mdsopen(shot);
-    time=mdsdata('\results::thomson:times');
+    try
+      time=mdsdata('\results::thomson:times');
+    catch
+      warning('Problems with \results::thomson:times')
+      disp(['!!!!!!!!!!!!!!!!!!!!!!!!! cannot continue with ' TCVkeywrdcase{index}])
+      return
+    end
+    if isempty(time) || ischar(time)
+      thomsontimes=time
+      warning('!!!!!!!!!!!!!!!!!!!!!!!!!\results::thomson:times  is empty? Check')
+      disp(['!!!!!!!!!!!!!!!!!!!!!!!!! cannot continue with ' TCVkeywrdcase{index}])
+      return
+    end
     if strcmp(TCVkeywrdcase{index},'nerho_edge')
       nodenameeff='\results::thomson.edge:ne';
       tracetdi=tdi(nodenameeff);
@@ -815,7 +875,19 @@ switch TCVkeywrdcase{index}
       zshift=0.;
     end
     mdsopen(shot);
-    time=mdsdata('\results::thomson:times');
+    try
+      time=mdsdata('\results::thomson:times');
+    catch
+      warning('Problems with \results::thomson:times')
+      disp(['!!!!!!!!!!!!!!!!!!!!!!!!! cannot continue with ' TCVkeywrdcase{index}])
+      return
+    end
+    if isempty(time) || ischar(time)
+      thomsontimes=time
+      warning('!!!!!!!!!!!!!!!!!!!!!!!!!\results::thomson:times  is empty? Check')
+      disp(['!!!!!!!!!!!!!!!!!!!!!!!!! cannot continue with ' TCVkeywrdcase{index}])
+      return
+    end
     if strcmp(TCVkeywrdcase{index},'nerhozshift')
       nodenameeff='\results::thomson:ne';
       tracetdi=tdi(nodenameeff);
@@ -887,8 +959,12 @@ switch TCVkeywrdcase{index}
         psiscatvol.data(it,:)=psiscatvol0;
       end
     end
-    for ir=1:length(psiscatvol.dim{2})
-      rho(ir,:)= sqrt(1.-psiscatvol.data(:,ir)./psi_max.data(:))';
+    if ~isempty(psiscatvol.data) && ~ischar(psiscatvol.data) && ~isempty(psi_max.data) && ~ischar(psi_max.data)
+      for ir=1:length(psiscatvol.dim{2})
+        rho(ir,:)= sqrt(1.-psiscatvol.data(:,ir)./psi_max.data(:))';
+      end
+    else
+      rho=NaN;
     end
     trace.dim=[{rho};{time}];
     trace.dimunits=[{'sqrt(psi)'} ; {'time [s]'}];