diff --git a/src/utility/assayWidgets.tw b/src/utility/assayWidgets.tw
index 33e23757b90b791ec68548f9505fd0b208e09528..fd56b5c5387bc2586aa86abc2dbe12625b369832 100644
--- a/src/utility/assayWidgets.tw
+++ b/src/utility/assayWidgets.tw
@@ -1323,25 +1323,8 @@
 	<</if>>
 <</if>>
 
-/* this can be handled, save for the vertex, with a cubic function but I can not for the life of me derive the formula without one of theose graphing calculators */
-<<set _int = $args[0].intelligence+$args[0].intelligenceImplant>>
-<<if _int >= 130>>
-	<<set _slaveMultiplier += 1.6>>
-<<elseif _int > 95>>
-	<<set _slaveMultiplier += 0.8>>
-<<elseif _int > 50>>
-	<<set _slaveMultiplier += 0.4>>
-<<elseif _int > 15>>
-	<<set _slaveMultiplier += 0.2>>
-<<elseif _int >= -15>>
-	<<set _slaveMultiplier += 0.1>>
-<<elseif _int >= -50>>
-	<<set _slaveMultiplier += -0.2>>
-<<elseif _int >= -95>>
-	<<set _slaveMultiplier += -0.4>>
-<<elseif _int >= -100>>
-	<<set _slaveMultiplier += -0.8>>
-<</if>>
+<<set _int = Math.clamp($args[0].intelligence+$args[0].intelligenceImplant,-130,130)>> /* make absolutely certain we do not use +-131 in the next line */
+<<set _slaveMultiplier += Math.asin(_int/131)>>
 
 <<if $args[0].vagina > -1 && $arcologies[0].FSRestartSMR == 1>>
 	<<if $args[0].dick > 0>>