diff --git a/matlab/TCV_IMAS/tcv2ids.m b/matlab/TCV_IMAS/tcv2ids.m
index 312cb4bc04e85f2f8b17efb95ded310f19b8234d..aa881ef4f7d666f4724f2578e0a85333fc85ea35 100644
--- a/matlab/TCV_IMAS/tcv2ids.m
+++ b/matlab/TCV_IMAS/tcv2ids.m
@@ -16,7 +16,7 @@ function [ids_from_tcv,varargout] = tcv2ids(shot,varargin);
 %                empty or 'delta' (default): meaning difference in upper is set (standard error_bar
 %                'added': errorbar is added: upper=data+delta and lower=data-delta
 %                'delta_with_lower': as 'delta' but lower also set
-%           'cocos_out': (default 11) cocos to transform ids from TCV cocos_in=17 to cocos_out
+%           'cocos_out': (DD3 default 11, DD4 default 17) cocos to transform ids from TCV cocos_in=17 to cocos_out
 %           'ipsign_out': if a specific sign fo Ip is desired in output within the cocos_out system (default 0=no specific sign)
 %           'b0sign_out': if a specific sign fo B0 is desired in output within the cocos_out system (default 0=no specific sign)
 %           'nverbose': (default 1), set it to 3 to have more messages, for example about not fully valid nodes when doing transformation (empty or Nans)
diff --git a/matlab/TCV_IMAS/tcv_get_ids_nbi.m b/matlab/TCV_IMAS/tcv_get_ids_nbi.m
index 9d5cf6a56080a327c02766f4cba32082639886f6..0b394b77b1a5ef21e562ffd85833a32f9de38a6f 100644
--- a/matlab/TCV_IMAS/tcv_get_ids_nbi.m
+++ b/matlab/TCV_IMAS/tcv_get_ids_nbi.m
@@ -5,6 +5,7 @@ function [ids_nbi,ids_nbi_description,varargout] = tcv_get_ids_nbi(shot,ids_nbi_
 %
 % gdat_params: gdat_data.gdat_params to get all params passed from original call, in particular error_bar options
 %
+imas_version_number=getenv('IMAS_VERSION');
 
 if exist('gdat_params')
   [ids_nbi, params_nbi] = tcv_ids_headpart(shot,ids_nbi_empty,'nbi','homogeneous_time',0,'gdat_params',gdat_params,varargin{:});
@@ -22,8 +23,7 @@ ids_nbi_description='';
 % "global_quantities_desc" which contains the same subfields themselves containing the gdat string aftre shot used
 %
 
-
-nb_units = 3; % assume 2 units: 1st NBH and DNBI
+nb_units = 3; % assume 3 units: 1st NB1. 2nd NB2 and DNBI
 ids_nbi.unit(1:nb_units) = ids_nbi.unit(1); % copy empty structure for all units, then fill in
 
 % create lists of what is different for each units so that can scan through units
@@ -76,9 +76,9 @@ beamlets_group.position(1).z = 0.;
 beamlets_group.position(2).phi = 58.8255*pi/180.;
 beamlets_group.position(2).r = 4.5889;
 beamlets_group.position(2).z = 0.;
-beamlets_group.position(2).phi = 295.2416*pi/180.;
-beamlets_group.position(2).r = 4.9274;
-beamlets_group.position(2).z = 0.;
+beamlets_group.position(3).phi = 295.2416*pi/180.;
+beamlets_group.position(3).r = 4.9274;
+beamlets_group.position(3).z = 0.;
 
 params_eff = params_eff_ref;
 for iunit=1:nb_units
@@ -172,7 +172,8 @@ end
 
 
 % cocos automatic transform
-if exist('ids_generic_cocos_nodes_transformation_symbolic') == 2
+if exist('ids_generic_cocos_nodes_transformation_symbolic') == 2 && ...
+        strcmp(imas_version_number(1),'3')
   [ids_nbi,cocoscoeff]=ids_generic_cocos_nodes_transformation_symbolic(ids_nbi,'nbi',gdat_params.cocos_in, ...
           gdat_params.cocos_out,gdat_params.ipsign_out,gdat_params.b0sign_out,gdat_params.ipsign_in,gdat_params.b0sign_in, ...
           gdat_params.error_bar,gdat_params.nverbose);