diff --git a/sysdata/libraries/stn/src/math.hb b/sysdata/libraries/stn/src/math.hb
index f22e17f..5b791b4 100644
--- a/sysdata/libraries/stn/src/math.hb
+++ b/sysdata/libraries/stn/src/math.hb
@@ -40,7 +40,7 @@ $TABLE_SIZE := @as(i32, 256)
 
 sin := fn(theta: f32): f32 {
 	si := @fti(theta * 0.5 * @itf(TABLE_SIZE) / PI)
-	d := theta - @floatcast(@itf(si)) * 2.0 * PI / @itf(TABLE_SIZE)
+	d := theta - @itf(si) * 2.0 * PI / @itf(TABLE_SIZE)
 	ci := si + TABLE_SIZE / 4 & TABLE_SIZE - 1
 	si &= TABLE_SIZE - 1
 	return SIN_TABLE[@bitcast(si)] + (SIN_TABLE[@bitcast(ci)] - 0.5 * SIN_TABLE[@bitcast(si)] * d) * d
@@ -48,10 +48,10 @@ sin := fn(theta: f32): f32 {
 
 cos := fn(theta: f32): f32 {
 	ci := @fti(theta * 0.5 * @itf(TABLE_SIZE) / PI)
-	d := theta - @floatcast(@itf(ci)) * 2.0 * PI / @itf(TABLE_SIZE)
+	d := theta - @itf(ci) * 2.0 * PI / @itf(TABLE_SIZE)
 	si := ci + TABLE_SIZE / 4 & TABLE_SIZE - 1
 	ci &= TABLE_SIZE - 1
-	return SIN_TABLE[@bitcast(si)] + (SIN_TABLE[@bitcast(ci)] - 0.5 * SIN_TABLE[@bitcast(si)] * d) * d
+	return SIN_TABLE[@bitcast(si)] - (SIN_TABLE[@bitcast(ci)] + 0.5 * SIN_TABLE[@bitcast(si)] * d) * d
 }
 
 tan := fn(theta: f32): f32 {