diff --git a/fx_s4716_longlong.c b/fx_s4716_longlong.c
index 48136a889751f7767867076b7df394333068b00a..c141c417663a2b47ab971755a96990b1fef9c205 100644
--- a/fx_s4716_longlong.c
+++ b/fx_s4716_longlong.c
@@ -38,6 +38,12 @@ fx_s4716 fx_s4716_longlong_div3(fx_s4716 a, fx_s4716 b){
 	return fx_to_longlong(result);
 }
 fx_s4716 fx_s4716_longlong_sin(fx_s4716 a){
-	long long result=sinTable[a];
+	long long quotient, remain, result;
+	remain=a%180;
+	if(remain>90)
+		remain=180-remain;
+	quotient=a/180;
+
+	result=(sinTable[remain])*(pow(-1,quotient));
 	return fx_to_longlong(result);
 }