diff --git a/crpptbx/TCV_IMAS/tcv_ids_circuit.m b/crpptbx/TCV_IMAS/tcv_ids_circuit.m
index df6d88dcf601ac19e0510437a85641bad640b19e..68239822305ed6ec36ff9b7c383b29b9fe310734 100644
--- a/crpptbx/TCV_IMAS/tcv_ids_circuit.m
+++ b/crpptbx/TCV_IMAS/tcv_ids_circuit.m
@@ -21,14 +21,14 @@ end
 % Preallocate memory and get data
 ids_struct_out(1:tcv_circuit_info.ntotcircuits) = ids_structures;
 for ii=1:tcv_circuit_info.ntotcircuits
-  tmpdata = gdat_tcv(shot,['' tcv_circuit_info.mds_paths{ii} '']); % Get current
-  if ischar(tmpdata.data)
+  if shot == -1; % model shot
     % replace by dummy
     tmpdata.dim{1} = [];
     tmpdata.data = []; 
     warning('no time data loaded for shot %d',shot);
     ids_struct_out_description{ii}.current = 'not loaded';
   else
+      tmpdata = gdat_tcv(shot,['' tcv_circuit_info.mds_paths{ii} '']); % Get current
       ids_struct_out_description{ii}.current = ['from ' tmpdata.data_fullpath];
   end
   ids_struct_out{ii}.current.data = tmpdata.data;
diff --git a/crpptbx/TCV_IMAS/tcv_ids_coil.m b/crpptbx/TCV_IMAS/tcv_ids_coil.m
index b1b989a2e7e3f185ee9462958c008dafca4cd76d..151614c8c069653f3e9c6a64e19f04e95e570ce3 100644
--- a/crpptbx/TCV_IMAS/tcv_ids_coil.m
+++ b/crpptbx/TCV_IMAS/tcv_ids_coil.m
@@ -74,11 +74,12 @@ for ii=1:ncircuits2ids
       ids_struct_out_description{ind_coil_ids}.name = ['through aa=tcv_ids_pf_active_definition from aa.coil_names  '];
       
       % time-varying data
-      tmpdata = tdi(mds_paths2ids{ii});
-      if ischar(tmpdata.data), % arcane way to detect no data was loaded
+      if shot == -1
         tmpdata.dim{1} = [];
         tmpdata.data = [];
         warning('no time data loaded for shot %d',shot);
+      else
+        tmpdata = tdi(mds_paths2ids{ii});
       end
       ids_struct_out{ind_coil_ids}.current.data = tmpdata.data;
       ids_struct_out_description{ind_coil_ids}.current.data = ['from ' mds_paths2ids{ii}];
diff --git a/crpptbx/TCV_IMAS/tcv_ids_supply.m b/crpptbx/TCV_IMAS/tcv_ids_supply.m
index 19078821a21c4af16121eb3a2d80861355fe4ff4..a39c5dc61eebaf6d2945411c370ece3824e2135e 100644
--- a/crpptbx/TCV_IMAS/tcv_ids_supply.m
+++ b/crpptbx/TCV_IMAS/tcv_ids_supply.m
@@ -21,16 +21,19 @@ end
 % Preallocate memory and get data
 ids_struct_out(1:tcv_circuit_info.ntotpowersupplies) = ids_structures;
 for ii=1:tcv_circuit_info.ntotpowersupplies
-  tmpdata = gdat_tcv(shot,['' tcv_circuit_info.mds_paths{ii} '']); % Get current
-  if ischar(tmpdata.data);
+  if shot ==-1
     warning('no time data loaded for shot %d',shot);
     tmpdata.dim{1} = [];
     tmpdata.data = [];
     % empty dummy
+    ids_struct_out_description{ii}.current =  sprintf('Not loaded for shot %d',shot);
+
+  else
+    tmpdata = gdat_tcv(shot,['' tcv_circuit_info.mds_paths{ii} '']); % Get current
+    ids_struct_out_description{ii}.current = ['abs value from ' tmpdata.data_fullpath];
   end
-    
+  
   ids_struct_out{ii}.current.data = abs(tmpdata.data); %%%%%%% FF:WHY ABS?? %%%%%%%
-  ids_struct_out_description{ii}.current = ['abs value from ' tmpdata.data_fullpath];
   ids_struct_out{ii}.current.time = tmpdata.dim{1};
   ids_struct_out{ii}.name = tcv_circuit_info.power_supply_names{ii}{1};
   ids_struct_out_description{ii}.name = ...
diff --git a/crpptbx/TCV_IMAS/test_tcv_get_ids.m b/crpptbx/TCV_IMAS/test_tcv_get_ids.m
new file mode 100644
index 0000000000000000000000000000000000000000..78cec894b078d7237623f45262d1f3c971a137b3
--- /dev/null
+++ b/crpptbx/TCV_IMAS/test_tcv_get_ids.m
@@ -0,0 +1,16 @@
+function passed = test_tcv_get_ids
+
+thispath = fileparts(mfilename('fullpath'));
+run(fullfile(thispath,'..','gdatpaths'));
+
+% simple test to check functionality
+
+shotlist = [-1,40000];
+
+for ishot=1:numel(shotlist)
+  shot = shotlist(ishot);
+  pf_active = tcv2ids(shot,'ids_names',{'pf_active','wall'});
+end
+
+passed = true;
+end
diff --git a/crpptbx/test_gdat_tcv_short.m b/crpptbx/test_gdat_tcv_short.m
index 95da4ab5402e70dc9fa23da2110afa235e8943a4..fb2b4472af6c4b149269e0c2f17a5be01e2b5dcf 100644
--- a/crpptbx/test_gdat_tcv_short.m
+++ b/crpptbx/test_gdat_tcv_short.m
@@ -10,3 +10,6 @@ function [pass] = test_gdat_tcv_short
 test_machine = 'tcv';
 test_signals = {'ip', 'q_rho'};
 [pass,request_list,err,telaps,skipped,gdat_results] = test_all_requestnames('machine',test_machine,'testmode',test_signals,'nverbose',0);
+
+%% test some TCV_IMAS things
+test_tcv_get_ids;
\ No newline at end of file