diff --git a/src/SecExp/SecExpBackwardCompatibility.tw b/src/SecExp/SecExpBackwardCompatibility.tw
index 6cd4232d65b6d26ffc0825a2c1d5ee3d99ca5c09..9797099c25bf27f26598934a0e76896a42e47d56 100644
--- a/src/SecExp/SecExpBackwardCompatibility.tw
+++ b/src/SecExp/SecExpBackwardCompatibility.tw
@@ -840,6 +840,7 @@
 /* recalculation widgets */
 <<fixBrokenUnits>>
 <<fixBrokenStats>>
+<<fixBrokenFS>>
 <<recalcSecRestPoint>>
 <<recalcCrimeCap>>
 <<recalcReqHelots>>
diff --git a/src/SecExp/secExpOptions.tw b/src/SecExp/secExpOptions.tw
index d760e690f8283a45e7c1164fe798efd8cdbb519f..8a2218577aff481ead7646b942b573a870b91e76 100644
--- a/src/SecExp/secExpOptions.tw
+++ b/src/SecExp/secExpOptions.tw
@@ -287,6 +287,7 @@
 <br>
 
 __Debug/cheats:__
+<<silently>><<MenialPopCap>><</silently>>
 <br><<link "Stabilize average">>
 	<<for _i = 0; _i < $militiaUnits.length; _i++>>
 		<<set $militiaUnits[_i].loyalty = random(40,60)>>
@@ -352,4 +353,48 @@ __Debug/cheats:__
 <br><<link "Lower crime">>
 	<<set $crime = Math.clamp($crime - 5, 0, 100)>>
 	<<goto "secExpOptions">>
+<</link>>
+<br><<link "Give menial slaves">>
+	<<set $helots = Math.clamp($helots + 30, 0, $PopCap)>>
+	<<goto "secExpOptions">>
+<</link>>
+<br><<link "Remove menial slaves">>
+	<<set $helots = Math.clamp($helots - 30, 0, $PopCap)>>
+	<<goto "secExpOptions">>
+<</link>>
+<br><<link "Give militia manpower">>
+	<<set $militiaFreeManpower += 30>>
+	<<recalcManpower>>
+	<<goto "secExpOptions">>
+<</link>>
+<br><<link "Remove militia manpower">>
+	<<set $militiaFreeManpower = Math.clamp($militiaFreeManpower - 30, 0, $militiaFreeManpower)>>
+	<<recalcManpower>>
+	<<goto "secExpOptions">>
+<</link>>
+<br><<link "Give mercs manpower">>
+	<<set $mercFreeManpower = 30>>
+	<<recalcManpower>>
+	<<goto "secExpOptions">>
+<</link>>
+<br><<link "Remove mercs manpower">>
+	<<set $mercFreeManpower = Math.clamp($mercFreeManpower - 30, 0, $mercFreeManpower)>>
+	<<recalcManpower>>
+	<<goto "secExpOptions">>
+<</link>>
+<br><<link "Add citizens">>
+	<<set $ACitizens = Math.clamp($ACitizens + 200, 0, $ACitizenLimit)>>
+	<<goto "secExpOptions">>
+<</link>>
+<br><<link "Remove citizens">>
+	<<set $ACitizens = Math.clamp($ACitizens - 200, 0, $ACitizenLimit)>>
+	<<goto "secExpOptions">>
+<</link>>
+<br><<link "Add slaves">>
+	<<set $ASlaves = Math.clamp($ASlaves + 200, 0, $ASlaveLimit)>>
+	<<goto "secExpOptions">>
+<</link>>
+<br><<link "Remove slaves">>
+	<<set $ASlaves = Math.clamp($ASlaves - 200, 0, $ASlaveLimit)>>
+	<<goto "secExpOptions">>
 <</link>>
\ No newline at end of file
diff --git a/src/SecExp/widgets/miscSecExpWidgets.tw b/src/SecExp/widgets/miscSecExpWidgets.tw
index e9e71edac0183277d073292295aa75d15df476bd..dccc6ae53511229a0cd99af75144584fb1f4aeea 100644
--- a/src/SecExp/widgets/miscSecExpWidgets.tw
+++ b/src/SecExp/widgets/miscSecExpWidgets.tw
@@ -295,4 +295,128 @@
 	<<if !isInt($battlesCount)>>
 		<<set $battlesCount = 0>>
 	<</if>>
+<</widget>>
+
+<<widget "fixBrokenFS">>
+	<<if $arcologies[0].FSSubjugationist != "unset" && !isFloat($arcologies[0].FSSubjugationist)>>
+		<<set $arcologies[0].FSSubjugationist = 0>>
+		<<FSChange "Subjugationist" 10>>
+		<br>Fixed NaN FS value
+	<</if>>
+	<<if $arcologies[0].FSGenderRadicalist != "unset" && !isFloat($arcologies[0].FSGenderRadicalist)>>
+		<br>Debug: FSGenderRadicalist = $arcologies[0].FSGenderRadicalist
+		<<set $arcologies[0].FSGenderRadicalist = 0>>
+		<<FSChange "GenderRadicalist" 10>>
+		<br>Fixed NaN FS value
+	<</if>>
+	<<if $arcologies[0].FSRestart != "unset" && !isFloat($arcologies[0].FSRestart)>>
+		<<set $arcologies[0].FSRestart = 0>>
+		<<FSChange "Eugenics" 10>>
+		<br>Fixed NaN FS value
+	<</if>>
+	<<if $arcologies[0].FSRepopulationFocus != "unset" && !isFloat($arcologies[0].FSRepopulationFocus)>>
+		<<set $arcologies[0].FSRepopulationFocus = 0>>
+		<<FSChange "Repopulationist" 10>>
+		<br>Fixed NaN FS value
+	<</if>>
+	<<if $arcologies[0].FSSupremacist != "unset" && !isFloat($arcologies[0].FSSupremacist)>>
+		<<set $arcologies[0].FSSupremacist = 0>>
+		<<FSChange "Supremacist" 10>>
+		<br>Fixed NaN FS value
+	<</if>>
+	<<if $arcologies[0].FSBodyPurist != "unset" && !isFloat($arcologies[0].FSBodyPurist)>>
+		<<set $arcologies[0].FSBodyPurist = 0>>
+		<<FSChange "BodyPurist" 10>>
+		<br>Fixed NaN FS value
+	<</if>>
+	<<if $arcologies[0].FSPaternalist != "unset" && !isFloat($arcologies[0].FSPaternalist)>>
+		<<set $arcologies[0].FSPaternalist = 0>>
+		<<FSChange "Paternalist" 10>>
+		<br>Fixed NaN FS value
+	<</if>>
+	<<if $arcologies[0].FSSlimnessEnthusiast != "unset" && !isFloat($arcologies[0].FSSlimnessEnthusiast)>>
+		<<set $arcologies[0].FSSlimnessEnthusiast = 0>>
+		<<FSChange "SlimnessEnthusiast" 10>>
+		<br>Fixed NaN FS value
+	<</if>>
+	<<if $arcologies[0].FSGenderFundamentalist != "unset" && !isFloat($arcologies[0].FSGenderFundamentalist)>>
+		<<set $arcologies[0].FSGenderFundamentalist = 0>>
+		<<FSChange "GenderFundamentalist" 10>>
+		<br>Fixed NaN FS value
+	<</if>>
+	<<if $arcologies[0].FSMaturityPreferentialist != "unset" && !isFloat($arcologies[0].FSMaturityPreferentialist)>>
+		<<set $arcologies[0].FSMaturityPreferentialist = 0>>
+		<<FSChange "MaturityPreferentialist" 10>>
+		<br>Fixed NaN FS value
+	<</if>>
+	<<if $arcologies[0].FSYouthPreferentialist != "unset" && !isFloat($arcologies[0].FSYouthPreferentialist)>>
+		<<set $arcologies[0].FSYouthPreferentialist = 0>>
+		<<FSChange "YouthPreferentialist" 10>>
+		<br>Fixed NaN FS value
+	<</if>>
+	<<if $arcologies[0].FSTransformationFetishist != "unset" && !isFloat($arcologies[0].FSTransformationFetishist)>>
+		<<set $arcologies[0].FSTransformationFetishist = 0>>
+		<<FSChange "TransformationFetishist" 10>>
+		<br>Fixed NaN FS value
+	<</if>>
+	<<if $arcologies[0].FSHedonisticDecadence != "unset" && !isFloat($arcologies[0].FSHedonisticDecadence)>>
+		<<set $arcologies[0].FSHedonisticDecadence = 0>>
+		<<FSChange "Hedonism" 10>>
+		<br>Fixed NaN FS value
+	<</if>>
+	<<if $arcologies[0].FSPhysicalIdealist != "unset" && !isFloat($arcologies[0].FSPhysicalIdealist)>>
+		<<set $arcologies[0].FSPhysicalIdealist = 0>>
+		<<FSChange "PhysicalIdealist" 10>>
+		<br>Fixed NaN FS value
+	<</if>>
+	<<if $arcologies[0].FSPastoralist != "unset" && !isFloat($arcologies[0].FSPastoralist)>>
+		<<set $arcologies[0].FSPastoralist = 0>>
+		<<FSChange "Pastoralist" 10>>
+		<br>Fixed NaN FS value
+	<</if>>
+	<<if $arcologies[0].FSAssetExpansionist != "unset" && !isFloat($arcologies[0].FSAssetExpansionist)>>
+		<<set $arcologies[0].FSAssetExpansionist = 0>>
+		<<FSChange "AssetExpansionist" 10>>
+		<br>Fixed NaN FS value
+	<</if>>
+	<<if $arcologies[0].FSDegradationist != "unset" && !isFloat($arcologies[0].FSDegradationist)>>
+		<<set $arcologies[0].FSDegradationist = 0>>
+		<<FSChange "Degradationist" 10>>
+		<br>Fixed NaN FS value
+	<</if>>
+	<<if $arcologies[0].FSRomanRevivalist != "unset" && !isFloat($arcologies[0].FSRomanRevivalist)>>
+		<<set $arcologies[0].FSRomanRevivalist = 0>>
+		<<FSChange "RomanRevivalist" 10>>
+		<br>Fixed NaN FS value
+	<</if>>
+	<<if $arcologies[0].FSChattelReligionist != "unset" && !isFloat($arcologies[0].FSChattelReligionist)>>
+		<<set $arcologies[0].FSChattelReligionist = 0>>
+		<<FSChange "ChattelReligionist" 10>>
+		<br>Fixed NaN FS value
+	<</if>>
+	<<if $arcologies[0].FSChineseRevivalist != "unset" && !isFloat($arcologies[0].FSChineseRevivalist)>>
+		<<set $arcologies[0].FSChineseRevivalist = 0>>
+		<<FSChange "ChineseRevivalist" 10>>
+		<br>Fixed NaN FS value
+	<</if>>
+	<<if $arcologies[0].FSArabianRevivalist != "unset" && !isFloat($arcologies[0].FSArabianRevivalist)>>
+		<<set $arcologies[0].FSArabianRevivalist = 0>>
+		<<FSChange "ArabianRevivalist" 10>>
+		<br>Fixed NaN FS value
+	<</if>>
+	<<if $arcologies[0].FSEdoRevivalist != "unset" && !isFloat($arcologies[0].FSEdoRevivalist)>>
+		<<set $arcologies[0].FSEdoRevivalist = 0>>
+		<<FSChange "EdoRevivalist" 10>>
+		<br>Fixed NaN FS value
+	<</if>>
+	<<if $arcologies[0].FSEgyptianRevivalist != "unset" && !isFloat($arcologies[0].FSEgyptianRevivalist)>>
+		<<set $arcologies[0].FSEgyptianRevivalist = 0>>
+		<<FSChange "EgyptianRevivalist" 10>>
+		<br>Fixed NaN FS value
+	<</if>>
+	<<if $arcologies[0].FSAztecRevivalist != "unset" && !isFloat($arcologies[0].FSAztecRevivalist)>>
+		<<set $arcologies[0].FSAztecRevivalist = 0>>
+		<<FSChange "AztecRevivalist" 10>>
+		<br>Fixed NaN FS value
+	<</if>>
 <</widget>>
\ No newline at end of file
diff --git a/src/js/utilJS.tw b/src/js/utilJS.tw
index 9a923d27edbf2a1a153db8e4abc344b82b3e132d..67681498a1978c824c6dc447de14fe6227d5c35b 100644
--- a/src/js/utilJS.tw
+++ b/src/js/utilJS.tw
@@ -363,14 +363,13 @@ window.Categorizer.prototype.cat = function(val, def) {
 	return result;
 };
 
-window.isInt = function(value) {
-  var x;
-  if (isNaN(value)) {
-    return false;
-  }
-  x = parseFloat(value);
-  return (x | 0) === x;
-};
+window.isFloat = function(n){
+    return n === +n && n !== (n|0);
+}
+
+window.isInt = function(n) {
+    return n === +n && n === (n|0);
+}
 
 /*
 Make everything waiting for this execute. Usage: