diff --git a/crpptbx/TCV/gdat_tcv.m b/crpptbx/TCV/gdat_tcv.m
index d5dc66e7d1768802fd59810826d746d4029ccdfc..ee7f6b09916d45b14b6e77d4b91e3b5f35e48240 100644
--- a/crpptbx/TCV/gdat_tcv.m
+++ b/crpptbx/TCV/gdat_tcv.m
@@ -241,7 +241,7 @@ end
 
 % special treatment for model shot=-1 or preparation shot >=100'000
 begstr = '';
-if shot==-1 || shot>=100000
+if shot==-1 || shot>=100000 || liuqe_version==-1
   % requires FBTE
   liuqe_version = -1;
   begstr = 'tcv_eq( "';
@@ -307,9 +307,31 @@ if strcmp(mapping_for_tcv.method(1:3),'tdi')
   gdat_data.data = aatmp.data;
   gdat_data.dim = aatmp.dim;
   nbdims = length(gdat_data.dim);
+
   if mapping_for_tcv.timedim==-1; 
-    mapping_for_tcv.timedim = nbdims;
-    if (size(gdat_data.data,nbdims)==1 && nbdims>1); mapping_for_tcv.timedim = nbdims-1; end
+    % try to find time dim from units
+    idim_non1 = []; len_dim = [];
+    for i=1:length(aatmp.dimunits)
+      if strcmp(aatmp.dimunits{i},'s'); mapping_for_tcv.timedim = i; end
+      if length(aatmp.dim{i})>1
+        idim_non1(end+1) = i;
+        len_dim(end+1) = length(aatmp.dim{i});
+      end
+    end
+    if length(idim_non1)==1
+      % only one dim non 1, assume it is time
+      mapping_for_tcv.timedim = idim_non1(1);
+    else
+      [aamax,iaamax]=max(len_dim);
+      if aamax./min(len_dim)>100
+        mapping_for_tcv.timedim = idim_non1(iaamax);
+      end
+    end
+    if mapping_for_tcv.timedim==-1
+      % assume last one except if of length 1
+      mapping_for_tcv.timedim = nbdims;
+      if (size(gdat_data.data,nbdims)==1 && nbdims>1); mapping_for_tcv.timedim = nbdims-1; end
+    end
   end
   dim_nontim = setdiff([1:nbdims],mapping_for_tcv.timedim);
   if ~isempty(dim_nontim)