diff --git a/matlab/TCV/gdat_tcv.m b/matlab/TCV/gdat_tcv.m
index 165876bdb6d80e27aaa4c96431fc2e9924ecd25c..b60c26ca86b8cb96a26c1f4cc0b4387e5e377c4e 100644
--- a/matlab/TCV/gdat_tcv.m
+++ b/matlab/TCV/gdat_tcv.m
@@ -1731,10 +1731,10 @@ elseif strcmp(mapping_for_tcv.method,'switchcase')
       psi_max.data = psi_norm.psimag(i_psi);
     end
     if ~isempty(psiscatvol.data) && ~ischar(psiscatvol.data) && ~isempty(psi_max.data) && ~ischar(psi_max.data)
-      for ir=1:length(psiscatvol.dim{2})
-        rho2 = max(1.-psiscatvol.data(:,ir)./psi_max.data,0);
-        rho(ir,:)= sqrt(rho2');
-        % rho(ir,:)= sqrt(1.-psiscatvol.data(:,ir)./psi_max.data(:))';
+      rho = sqrt(1.-psiscatvol.data./repmat(psi_max.data(:).',[size(psiscatvol.data,1),1]));
+      if any(imag(rho(:)))
+        warning('Found complex values when computing rho from psi TS, replacing them with 0');
+        rho(imag(rho(:))) = 0;
       end
     else
       if gdat_params.nverbose>=1 && gdat_data.gdat_params.edge==0