diff --git a/libraries/base/diag/tb/vhdl/tb_diag_pkg.vhd b/libraries/base/diag/tb/vhdl/tb_diag_pkg.vhd
index 715f1aed9445436ae06116c7bf2520068d03015e..47474faa2976ab7ae41a01136cecd27f837299cf 100644
--- a/libraries/base/diag/tb/vhdl/tb_diag_pkg.vhd
+++ b/libraries/base/diag/tb/vhdl/tb_diag_pkg.vhd
@@ -561,8 +561,9 @@ PACKAGE BODY tb_diag_pkg IS
     CONSTANT c_omega : REAL := MATH_2_PI * c_sub / c_Nfft;
     CONSTANT c_lat   : REAL := 1.0 * c_omega;  -- the I and Q start when in_val='1', this introduces 1 dp_clk latency, so adjust phase of ref_I and ref_Q to compensate
     CONSTANT c_k     : REAL := REAL(in_cnt);
-    CONSTANT c_I     : REAL := SIN(c_k * c_omega + c_lat);  -- I = in phase reference
-    CONSTANT c_Q     : REAL := COS(c_k * c_omega + c_lat);  -- Q = quadrature reference
+    CONSTANT c_angle : REAL := (c_k * c_omega + c_lat) MOD MATH_2_PI;  -- keep angle in SIN(), COS() within 2pi to avoid "Error: XLOCAL <= 0.0 after reduction in COS(X)"
+    CONSTANT c_I     : REAL := SIN(c_angle);  -- I = in phase reference
+    CONSTANT c_Q     : REAL := COS(c_angle);  -- Q = quadrature reference
     CONSTANT c_dat   : REAL := REAL(TO_SINT(in_dat));
     CONSTANT c_phase : REAL := ARCTAN(accum_Q, accum_I + c_eps);
     CONSTANT c_ampl  : REAL := SQRT((ABS(accum_I))**2.0 + (ABS(accum_Q))**2.0) * 2.0 / c_Nsamples;
@@ -650,7 +651,8 @@ PACKAGE BODY tb_diag_pkg IS
     CONSTANT c_lat         : REAL := 1.0 * c_omega;  -- adjust phase of c_cw to compensate for measurement latency
     CONSTANT c_k           : REAL := REAL(in_cnt);
     CONSTANT c_dat         : REAL := REAL(TO_SINT(in_dat));
-    CONSTANT c_cw          : REAL := cw_ampl * SIN(c_k * c_omega + cw_phase + c_lat);
+    CONSTANT c_angle       : REAL := (c_k * c_omega + cw_phase + c_lat) MOD MATH_2_PI;  -- keep angle in SIN(), COS() within 2pi to avoid "Error: XLOCAL <= 0.0 after reduction in COS(X)"
+    CONSTANT c_cw          : REAL := cw_ampl * SIN(c_angle);
     CONSTANT c_noise       : REAL := c_cw - c_dat;
     CONSTANT c_noise_power : REAL := (ABS(c_noise))**2.0;
   BEGIN