diff --git a/src/lua_mathlib.c b/src/lua_mathlib.c
index d78cb23a49231ac130fb5338157c7db14747458e..8ae432fc53694d920efa36881d44009e8a270d18 100644
--- a/src/lua_mathlib.c
+++ b/src/lua_mathlib.c
@@ -81,9 +81,15 @@ static int lib_finecosine(lua_State *L)
 
 static int lib_finetangent(lua_State *L)
 {
-	// HACK: add ANGLE_90 to make tan() in Lua start at 0 like it should
-	// use & 4095 instead of & FINEMASK (8191), so it doesn't go out of the array's bounds
-	lua_pushfixed(L, FINETANGENT(((luaL_checkangle(L, 1)+ANGLE_90)>>ANGLETOFINESHIFT) & 4095));
+	// 2.1.15 ONLY HACK: optional boolean argument, only add ANGLE_90 if true
+	boolean newtan = lua_optboolean(L, 2);
+
+	if (newtan)
+		// HACK: add ANGLE_90 to make tan() in Lua start at 0 like it should
+		// use & 4095 instead of & FINEMASK (8191), so it doesn't go out of the array's bounds
+		lua_pushfixed(L, FINETANGENT(((luaL_checkangle(L, 1)+ANGLE_90)>>ANGLETOFINESHIFT) & 4095));
+	else
+		lua_pushfixed(L, FINETANGENT((luaL_checkangle(L, 1)>>ANGLETOFINESHIFT) & 4095));
 	return 1;
 }