diff --git a/matlab/TCV/gdat_tcv.m b/matlab/TCV/gdat_tcv.m
index 5d9df8d1eca297aa97050aa2317bf87fe965fcf3..d11039a7680b9feddec3c0ed2585b11640582d53 100644
--- a/matlab/TCV/gdat_tcv.m
+++ b/matlab/TCV/gdat_tcv.m
@@ -2600,8 +2600,8 @@ elseif strcmp(mapping_for_tcv.method,'switchcase')
       gdat_data.dimunits{1} = 's';
       gdat_data.units = 'W';
       tension = -1e5;
-      vloop_smooth=interpos(-63,vloop.t,vloop.data,gdat_data.ohm.t,tension);
-      ip_t = interpos(21,ip.t,ip.data,gdat_data.ohm.t);
+      vloop_smooth=interpos_nan(-63,vloop.t,vloop.data,gdat_data.ohm.t,tension);
+      ip_t = interpos_nan(21,ip.t,ip.data,gdat_data.ohm.t);
       gdat_data.ohm.data = -vloop_smooth.*ip_t; % TCV has wrong sign for Vloop
       gdat_data.ohm.raw_data = -vloop.data.*ip_t;
       gdat_data.ohm.data_fullpath = 'from vloop*Ip, smoothed vloop in data, unsmoothed in raw_data';
@@ -2637,7 +2637,7 @@ elseif strcmp(mapping_for_tcv.method,'switchcase')
         gdat_data.ec.label='P_{EC}';
         gdat_data.ec.help = tracetdi.help;
         % add to main with linear interpolation and 0 for extrapolated values
-        gdat_data.data(:,end+1) = interpos(-21,gdat_data.ec.t,gdat_data.ec.data(:,end),gdat_data.t);
+        gdat_data.data(:,end+1) = interpos_nan(-21,gdat_data.ec.t,gdat_data.ec.data(:,end),gdat_data.t);
         gdat_data.x(end+1) = size(gdat_data.data,2);
         gdat_data.label{end+1}=gdat_data.ec.label;
       end
@@ -2706,7 +2706,7 @@ elseif strcmp(mapping_for_tcv.method,'switchcase')
         gdat_data.rad.label='P_{RAD}';
         gdat_data.rad.help = tracetdi.help;
         % add to main with linear interpolation and 0 for extrapolated values
-        gdat_data.data(:,end+1) = interpos(-21,gdat_data.rad.t,gdat_data.rad.data(:,end),gdat_data.t);
+        gdat_data.data(:,end+1) = interpos_nan(-21,gdat_data.rad.t,gdat_data.rad.data(:,end),gdat_data.t);
         index_rad = size(gdat_data.data,2);
         gdat_data.x(end+1) = size(gdat_data.data,2);
         gdat_data.label{end+1}=gdat_data.rad.label;
@@ -3141,7 +3141,7 @@ elseif strcmp(mapping_for_tcv.method,'switchcase')
       psi_axis=gdat_tcv(shot,params_eff);
       params_eff.data_request='b0';
       b0=gdat_tcv(shot,params_eff);
-      b0tpsi = interpos(21,b0.t,b0.data,psi_axis.t); %q_rho on same time base as psi_axis
+      b0tpsi = interpos_nan(21,b0.t,b0.data,psi_axis.t); %q_rho on same time base as psi_axis
       if isempty(psi_axis.data) || isempty(psi_axis.dim) || isempty(q_rho.data) || isempty(q_rho.dim)
         if (gdat_params.nverbose>=1); warning(['problems loading data for ' nodenameeff ' for data_request= ' data_request_eff]); end
         return
@@ -3532,7 +3532,7 @@ elseif strcmp(mapping_for_tcv.method,'switchcase')
         end
         % compute interpolation with tension provided
         for i=1:size(sxr.data,2)
-          gdat_data.data(i,:) = interpos(sxr.time,sxr.data(:,i),gdat_data.t,gdat_data.gdat_params.fit_tension);
+          gdat_data.data(i,:) = interpos_nan(sxr.time,sxr.data(:,i),gdat_data.t,gdat_data.gdat_params.fit_tension);
         end
       end
       gdat_data.r_x = sxr.geometry.xchord(gdat_data.x,:);
@@ -3597,7 +3597,7 @@ elseif strcmp(mapping_for_tcv.method,'switchcase')
         % invert index of time and channel (rho)
         gdat_data.data = mpx.(gdat_data.gdat_params.camera(1:3)).signal.data';
         gdat_data.t = mpx.(gdat_data.gdat_params.camera(1:3)).signal.dim{1};
-        gdat_data.dim{1} = interpos(21,mpx.top.rho.time,mpx.top.rho.rhopsi,gdat_data.t)';
+        gdat_data.dim{1} = interp1(mpx.top.rho.time,mpx.top.rho.rhopsi,gdat_data.t)';
         gdat_data.dim{2} = mpx.(gdat_data.gdat_params.camera(1:3)).signal.dim{1};
         gdat_data.x = gdat_data.dim{1};
         gdat_data.(gdat_data.gdat_params.camera).data = gdat_data.data;
@@ -3608,14 +3608,14 @@ elseif strcmp(mapping_for_tcv.method,'switchcase')
       else
         gdat_data.data = mpx.signal.data';
         gdat_data.t = mpx.signal.dim{1};
-        gdat_data.dim{1} = interpos(21,mpx.top.rho.time,mpx.top.rho.rhopsi,gdat_data.t);
+        gdat_data.dim{1} = interpos_nan(21,mpx.top.rho.time,mpx.top.rho.rhopsi,gdat_data.t);
         gdat_data.dim{2} = mpx.(gdat_data.gdat_params.camera(1:3)).signal.dim{1};
         %
         gdat_data.top.data = mpx.top.signal.data';
         gdat_data.top.x = gdat_data.dim{1};
         gdat_data.top.channel = mpx.top.signal.dim{2};
         gdat_data.bottom.data = mpx.bot.signal.data;
-        gdat_data.bottom.x = interpos(21,mpx.bot.rho.time,mpx.bot.rho.rhopsi,gdat_data.t);
+        gdat_data.bottom.x = interpos_nan(21,mpx.bot.rho.time,mpx.bot.rho.rhopsi,gdat_data.t);
         gdat_data.bottom.channel = mpx.bottom.signal.dim{2};
         gdat_data.(gdat_data.gdat_params.camera).channel = mpx.(gdat_data.gdat_params.camera(1:3)).signal.dim{2};
         gdat_data.data_fullpath = ['MPX for ' gdat_data.gdat_params.camera ' camera in .data, "rho" in .x between [-1,1]' ...
@@ -3886,7 +3886,7 @@ end
 
 if ~isempty(tracefirrat.data) && ~ischar(tracefirrat.data) && any(isfinite(tracefirrat.data)) ...
       && ~isempty(tracefirrat.dim) && ~isempty(tracefirrat.dim{1})
-  firthomratio = interpos(21,tracefirrat.dim{1},tracefirrat.data,timebase);
+  firthomratio = interpos_nan(21,tracefirrat.dim{1},tracefirrat.data,timebase);
 end
 
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -4099,7 +4099,7 @@ switch numel(zshifteff)
   case 1
     zshifteff=zshifteff * ones(size(t_th));
   case numel(t_psi)
-    zshifteff=interpos(21,t_psi,zshifteff,t_th);
+    zshifteff=interpos_nan(21,t_psi,zshifteff,t_th);
   case numel(t_th)
     % ok
   otherwise
diff --git a/matlab/TCV/tcv_requests_mapping.m b/matlab/TCV/tcv_requests_mapping.m
index bb06a26e6cd56ae3b6a1daea08d45fa499d6e879..ce8a01441a5d585848dde445379a870f69c3b106 100644
--- a/matlab/TCV/tcv_requests_mapping.m
+++ b/matlab/TCV/tcv_requests_mapping.m
@@ -602,7 +602,7 @@ switch lower(data_request)
   mapping.method = 'tdiliuqe';
   mapping.expression = '\results::te_x_a[*,12]';
   mapping.method = 'expression';
-  mapping.expression = ['params_eff = gdat_data.gdat_params;params_eff.data_request=''\results::te_x_a[*,12]''; ' ...
+  mapping.expression = ['if shot > 78662, disp(''no XTE anymore'');gdat_tmp.data=[];return;end;params_eff = gdat_data.gdat_params;params_eff.data_request=''\results::te_x_a[*,12]''; ' ...
                     'gdat_tmp=gdat_tcv([],params_eff); ' ...
                     'params_eff = gdat_data.gdat_params;params_eff.data_request=''\magnetics::iplasma:trapeze''; ' ...
                     'aa=gdat_tcv([],params_eff);it=find(abs(aa.data)<10e3);it2=iround_os(gdat_tmp.t,aa.t(it));gdat_tmp.data(it2)=NaN;' ...
diff --git a/matlab/interpos_nan.m b/matlab/interpos_nan.m
new file mode 100644
index 0000000000000000000000000000000000000000..396b06b3ce1c00e2f9d89a07d9900530c8afed24
--- /dev/null
+++ b/matlab/interpos_nan.m
@@ -0,0 +1,56 @@
+function [varargout] = interpos_nan(var1, var2, var3, varargin);
+%
+% see help interpos for details
+%
+% pre-exclude NaNs from either xin or yin before calling interpos
+%
+nverbose = 1; % warnings
+%
+if nargin < 3
+  error('xin and yin required');
+else
+  if isscalar(var1)
+    xin = var2;
+    yin = var3;
+    kopt_provided = 1;
+  else
+    xin = var1;
+    yin = var2;
+    kopt_provided = 0;
+  end
+  if nverbose >= 1 && (any(isnan(xin)) || any(isnan(yin))), warning('NaNs removed by interpos_nan'); end
+end
+
+ij = find(~isnan(xin) & ~isnan(yin));
+if ~isempty(ij)
+  xin_eff = xin(ij);
+  yin_eff = yin(ij);
+  if kopt_provided == 1
+    switch nargout
+      case 1
+        [varargout{1}] = interpos(var1, xin_eff, yin_eff, varargin{:});
+      case 2
+        [varargout{1},varargout{2}] = interpos(var1, xin_eff, yin_eff, varargin{:});
+      case 3
+        [varargout{1},varargout{2},varargout{3}] = interpos(var1, xin_eff, yin_eff, varargin{:});
+      otherwise
+        [varargout{1},varargout{2},varargout{3},varargout{4}] = interpos(var1, xin_eff, yin_eff, varargin{:});
+    end
+  else
+    switch nargout
+      case 1
+        [varargout{1}] = interpos(xin_eff, yin_eff, var3, varargin{:});
+      case 2
+        [varargout{1},varargout{2}] = interpos(xin_eff, yin_eff, var3, varargin{:});
+      case 3
+        [varargout{1},varargout{2},varargout{3}] = interpos(xin_eff, yin_eff, var3, varargin{:});
+      otherwise
+        [varargout{1},varargout{2},varargout{3},varargout{4}] = interpos(xin_eff, yin_eff, var3, varargin{:});
+    end
+  end
+else
+  if nargout > 0
+    varargout = cell(nargout,1);
+    warning('Only NaNs in xin/yin');
+  end
+end
diff --git a/matlab/tests/test_requestnames.m b/matlab/tests/test_requestnames.m
index ad90fca1fcc34a3b6183b6e78c7a9326aae116d1..b8fae2bb9ccac94caaa5ce578c70c194bca90eeb 100644
--- a/matlab/tests/test_requestnames.m
+++ b/matlab/tests/test_requestnames.m
@@ -36,6 +36,10 @@ classdef (SharedTestFixtures={...
           % need a newer shot for tcv radcam
           shot = 81102;
           gdat_call = sprintf(['gdat_' lower(testCase.Machine) '(%s,''%s'')'],shot,request);
+        case {'mpx', 'xte'}
+          % need a older shot
+          shot = 65555;
+          gdat_call = sprintf(['gdat_' lower(testCase.Machine) '(%s,''%s'')'],shot,request);
       end
 
       % logging
diff --git a/matlab/tests/test_requestnames_tcv.m b/matlab/tests/test_requestnames_tcv.m
index 6941e96ddac1f9ae3cc07d32ee0dc76e58b0c5d5..872f12c547cfb4325f968844ab22fd351572c39e 100644
--- a/matlab/tests/test_requestnames_tcv.m
+++ b/matlab/tests/test_requestnames_tcv.m
@@ -7,7 +7,7 @@ classdef (TestTags={'tcv'})test_requestnames_tcv < test_requestnames
 
   properties(TestParameter)
     % parameters that will vary during tests
-    shot  = {'65565'};
+    shot  = {'82913'};
     requests_fast = get_all_gdat_requests('TCV','fast');
     requests_slow = get_all_gdat_requests('TCV','slow');
   end
diff --git a/matlab/tests_matlab.m b/matlab/tests_matlab.m
index 1b141e0299da1138327e8dddfca745d3410418a0..a2055fcc858b9e117b3461abf2aef6c3e23f8dd1 100644
--- a/matlab/tests_matlab.m
+++ b/matlab/tests_matlab.m
@@ -2,7 +2,6 @@ function tests_matlab(test_case)
 try
    fprintf('\n Running test file: %s\n',mfilename('fullpath'));
    fprintf('     Time: %s\n',datestr(now));
-   
    passed = run_gdat_tests(test_case); % call to your test script here, with optional test_case input
    exit_code = int32(~passed); % convert to bash shell convention
 catch ME