diff --git a/src/EpuFG.cpp b/src/EpuFG.cpp
index 331afb0e81f290430bda0cd85951674d517d5460..3c79ba09fdcb4eb3628a969cc5ce58a6b7af33c2 100644
--- a/src/EpuFG.cpp
+++ b/src/EpuFG.cpp
@@ -665,11 +665,29 @@ void EpuFG::write_Phases(Tango::WAttribute &attr)
                                         (const char *)"Wrong number of vales",
                                         (const char *)"Wrong number of vales",
                                         (const char *)"EpuFG::write_Phases()");
+	Tango::DevDouble R = w_val[0];
+	Tango::DevDouble P = w_val[1];
+	Tango::DevDouble J = w_val[2];
+
+	if (tkt22322_enable){
+		if (R >= 0.0 ) {
+			P = -fabs(P);
+			J = -fabs(J);
+		} else {
+			P = fabs(P);
+			J = fabs(J);
+		}
+	}
 
 	vector<double> pos(3);
+/*
 	pos[0] = w_val[0] + w_val[1];
 	pos[1] = w_val[1] + w_val[2];
 	pos[2] = w_val[0] + w_val[2];
+*/
+	pos[0] = R + P;
+	pos[1] = P + J;
+	pos[2] = R + J;
 
 	vector<string> ph(3);
 	ph[0] = "ROW";