diff --git a/devNotes/VersionChangeLog-Premod+LoliMod.txt b/devNotes/VersionChangeLog-Premod+LoliMod.txt
index bec69cdab9b4300fed24557172bb46ad0da95404..bc3188d87dd74f62d8d1b61f579380008d0f6e47 100644
--- a/devNotes/VersionChangeLog-Premod+LoliMod.txt
+++ b/devNotes/VersionChangeLog-Premod+LoliMod.txt
@@ -11,6 +11,7 @@ Pregmod
 	-fertility diet no longer blocked by chastity
 	-RA can now apply contraceptives to postpartum slaves
 	-RA can now manage basic abortions
+	-added abortion tracking tattoos
 	-fixes
 
 0.10.7.1-2.1.x
diff --git a/src/js/DefaultRules.js b/src/js/DefaultRules.js
index 7051d51e59ca5aa5ae521c06eba74bfa60021a99..8be0e9ecbdcf60f5d487c9c899570d090c7c713d 100644
--- a/src/js/DefaultRules.js
+++ b/src/js/DefaultRules.js
@@ -1060,6 +1060,7 @@ window.DefaultRules = (function() {
 				}
 
 				if (lastPregRule(slave, V.defaultRules)) { slave.preg = -1; } else { slave.preg = 0; }
+				if (slave.abortionTat > -1) { slave.abortionTat++, cashX(forceNeg(V.surgeryCost), "slaveSurgery", slave); }
 				V.reservedChildren = FetusGlobalReserveCount("incubator");
 				V.reservedChildrenNursery = FetusGlobalReserveCount("nursery");
 				slave.pregType = 0, slave.pregSource = 0, slave.pregKnown = 0, slave.pregWeek = -2;
diff --git a/src/js/SlaveState.js b/src/js/SlaveState.js
index 717224238844c7c70fed9c4212b55b34b66d807f..db5443fe9898c5dc957038ae39f6cc4b88c16e4d 100644
--- a/src/js/SlaveState.js
+++ b/src/js/SlaveState.js
@@ -1811,6 +1811,13 @@ App.Entity.SlaveState = class SlaveState {
 		 * * "a butterfly"
 		 * @type {string|number} */
 		this.bellyTat = 0;
+		/**
+		 * Slave has a series of tattoos to denote how many abortions she has had.
+		 * * -1: no tattoo
+		 * *  0: assigned to have tattoo, may not have one yet
+		 * * 1+: number of abortion tattoos she has
+		 */
+		this.abortionTat = -1;
 		/** Slave will give birth this week.
 		 *
 		 * 1: true; 0: false */
diff --git a/src/js/assayJS.js b/src/js/assayJS.js
index 2e62bac72ac747eb1c14f3fe925da89fa096c724..b12d736de35bc04bcae7235fc90c04cc700b8863 100644
--- a/src/js/assayJS.js
+++ b/src/js/assayJS.js
@@ -170,6 +170,9 @@ window.TatScore = /** @param {App.Entity.SlaveState} slave */ function (slave) {
 	} else if (slave.anusTat !== 0) {
 		tatScore += 1.25;
 	}
+	if (slave.abortionTat > 0 || (slave.abortionTat == 0 && slave.pregKnown == 1)) {
+		tatScore += 1;
+	}
 
 	return tatScore;
 };
diff --git a/src/npc/abort.tw b/src/npc/abort.tw
index 6974d0a89475fcc66d4537929a827a272900e1d6..2849719dfce626fbdc77e7c3102ff996b85f591a 100644
--- a/src/npc/abort.tw
+++ b/src/npc/abort.tw
@@ -36,6 +36,12 @@ The remote surgery makes aborting a pregnancy quick and efficient.
 	<</if>>
 <</if>>
 
+<<if $activeSlave.abortionTat > -1>>
+	The temporary tattoo of a child has been replaced with $his <<= ordinalSuffix($activeSlave.abortionTat)>> crossed out infant.
+	<<set $activeSlave.abortionTat++>>
+	<<run cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave)>>
+<</if>>
+
 <<if lastPregRule($activeSlave,$defaultRules)>><<set $activeSlave.preg = -1>><<else>><<set $activeSlave.preg = 0>><</if>>
 
 <<set $reservedChildren = FetusGlobalReserveCount("incubator")>>
diff --git a/src/pregmod/saClothes.tw b/src/pregmod/saClothes.tw
index 09c0d8520a3881ff95c0f785bcd7e31563c8ad98..3783bef62753b193fea9d6b19bcdbbf35038bdd5 100644
--- a/src/pregmod/saClothes.tw
+++ b/src/pregmod/saClothes.tw
@@ -457,6 +457,11 @@
 					<<set $slaves[$i].devotion += 4>>
 				<</if>>
 			<</if>>
+			<<if $slaves[$i].abortionTat > -1>>
+				The temporary tattoo of a child has been replaced with $his <<= ordinalSuffix($slaves[$i].abortionTat)>> crossed out infant.
+				<<set $slaves[$i].abortionTat++>>
+				<<run cashX(forceNeg($surgeryCost), "slaveSurgery", $slaves[$i])>>
+			<</if>>
 		<<else>>
 			<<if $slaves[$i].waist <= -95>>
 				$His waist is so absurd that $his extreme corsetage does not affect $him further.
@@ -806,6 +811,11 @@
 					@@.hotpink;pleased by this stark development,@@ since $he is so attentive to your will. $He also expects $he'll be able to fuck better now.
 					<<set $slaves[$i].devotion += 4>>
 				<</if>>
+				<<if $slaves[$i].abortionTat > -1>>
+					The temporary tattoo of a child has been replaced with $his <<= ordinalSuffix($slaves[$i].abortionTat)>> crossed out infant.
+					<<set $slaves[$i].abortionTat++>>
+					<<run cashX(forceNeg($surgeryCost), "slaveSurgery", $slaves[$i])>>
+				<</if>>
 			<</if>>
 		<</if>>
 	<</if>>
diff --git a/src/pregmod/widgets/bodyswapWidgets.tw b/src/pregmod/widgets/bodyswapWidgets.tw
index 509d0727be931e3d51c975ab68db1b6969b2260f..4c0c353591316d1638e32b8fd6b15cb79c109db2 100644
--- a/src/pregmod/widgets/bodyswapWidgets.tw
+++ b/src/pregmod/widgets/bodyswapWidgets.tw
@@ -184,6 +184,7 @@
 <<set $args[0].buttplug = $args[1].buttplug>>
 <<set $args[0].customTat = $args[1].customTat>>
 <<set $args[0].bellyTat = $args[1].bellyTat>>
+<<set $args[0].abortionTat = $args[1].abortionTat>>
 <<set $args[0].bellySag = $args[1].bellySag>>
 <<set $args[0].bellySagPreg = $args[1].bellySagPreg>>
 <<set $args[0].induce = $args[1].induce>>
diff --git a/src/pregmod/widgets/pregmodWidgets.tw b/src/pregmod/widgets/pregmodWidgets.tw
index 25f73cd2c4750a3ed51fd67d1af6e07976af2de1..774145a94508eb1f303a7a81528ae0878f241905 100644
--- a/src/pregmod/widgets/pregmodWidgets.tw
+++ b/src/pregmod/widgets/pregmodWidgets.tw
@@ -159,6 +159,9 @@
 <<if ndef $args[0].clone>>
 	<<set $args[0].clone = 0>>
 <</if>>
+<<if ndef $args[0].abortionTat>>
+	<<set $args[0].abortionTat = -1>>
+<</if>>
 <<if def $args[0].reservedChildren>>
 	<<run delete $args[0].reservedChildren>>
 <</if>>
diff --git a/src/uncategorized/bodyModification.tw b/src/uncategorized/bodyModification.tw
index f5a749171aa9cf6fe52899e6a4d4c57748ca4fdd..a1342eced5a031dab1c29ea94104bb2542f77c17 100644
--- a/src/uncategorized/bodyModification.tw
+++ b/src/uncategorized/bodyModification.tw
@@ -764,6 +764,27 @@ Choose a tattoo style:
 	$His middle isn't large enough to be a suitable canvas for a navel focused tattoo.
 <</if>>
 
+<br>&nbsp;&nbsp;&nbsp;&nbsp;
+<<if $activeSlave.abortionTat > 0>>
+	<<if $activeSlave.abortionTat > 1>>
+		$He has a series of numberToWords($activeSlave.abortionTat) crossed out baby-shaped tattoos<<if $activeSlave.pregKnown == 1>>, and one uncrossed one,<</if>> adorning $his stomach.
+	<<else>>
+		$He has a single crossed out baby-shaped tattoo<<if $activeSlave.pregKnown == 1>>, and one uncrossed one,<</if>> adorning $his stomach.
+	<</if>>
+	//[[Remove tattoos|Body Modification][$activeSlave.abortionTat = -1, cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave)]]//
+<<elseif $activeSlave.abortionTat == 0>>
+	<<if $activeSlave.pregKnown == 1>>
+		$He has a single baby-shaped temporary tattoo adorning $his stomach.
+		//[[Remove it|Body Modification][$activeSlave.abortionTat = -1]]//
+	<<else>>
+		$He is scheduled to receive a tattoo each time $he gets an abortion or miscarries.
+		//[[Cancel|Body Modification][$activeSlave.abortionTat = -1]]//
+	<</if>>
+<<else>>
+	Have $him receive a tattoo for each abortion or miscarriage $he has.
+	//[[Begin keeping track|Body Modification][$activeSlave.abortionTat = 0]]//
+<</if>>
+
 <br>
 <br>&nbsp;&nbsp;&nbsp;&nbsp;
 
diff --git a/src/uncategorized/saDrugs.tw b/src/uncategorized/saDrugs.tw
index 54eab54f4c706170d84721f6f676013e61c736cb..483c6985d72c84c899eda9a11561f78c2a8ef6da 100644
--- a/src/uncategorized/saDrugs.tw
+++ b/src/uncategorized/saDrugs.tw
@@ -1099,6 +1099,11 @@
 					<<set $slaves[$i].devotion += 4>>
 				<</if>>
 			<</if>>
+			<<if $slaves[$i].abortionTat > -1>>
+				The temporary tattoo of a child has been replaced with $his <<= ordinalSuffix($slaves[$i].abortionTat)>> crossed out infant.
+				<<set $slaves[$i].abortionTat++>>
+				<<run cashX(forceNeg($surgeryCost), "slaveSurgery", $slaves[$i])>>
+			<</if>>
 		<</if>>
 	<</if>>
 
diff --git a/src/uncategorized/saLongTermEffects.tw b/src/uncategorized/saLongTermEffects.tw
index 798908ddcb20d5b3992f5cced07042b788b2b44b..9567398905c0667d1e476c1c358583e5998d7d59 100644
--- a/src/uncategorized/saLongTermEffects.tw
+++ b/src/uncategorized/saLongTermEffects.tw
@@ -4512,6 +4512,10 @@
 			Society is @@.red;disapproving@@ of $slaves[$i].slaveName's flat, unimpregnated stomach.
 			<<= FSChangePorn("Repopulationist", -2)>>
 		<</if>>
+		<<if $slaves[$i].abortionTat > 0>>
+			Society @@.red;is disgusted@@ by the tally of aborted children adorning $his skin.
+			<<= FSChangePorn("Repopulationist", -1)>>
+		<</if>>
 	<<elseif $arcologies[0].FSRepopulationFocusPregPolicy == 1>>
 		<<if $slaves[$i].preg > 30>>
 			Society @@.green;loves@@ $slaves[$i].slaveName's advanced pregnancy. It's very trendy.
@@ -4534,6 +4538,10 @@
 				The Societal Elite @@.green;are pleased@@ your child is growing within $him. The mark covering $his lower belly, coupled with $his gravidity and blessing, @@.green;enamors@@ your populace.
 				<<set $failedElite -= 5+$slaves[$i].pregType>>
 				<<= FSChangePorn("Eugenics", 3)>>
+				<<if $slaves[$i].abortionTat > 0>>
+					The tally of aborted children adorning $his middle @@.red;is worrying,@@ however.
+					<<= FSChangePorn("Eugenics", -1)>>
+				<</if>>
 			<</if>>
 		<<else>>
 			<<if $slaves[$i].preg > $slaves[$i].pregData.normalBirth/1.33>>
@@ -4554,6 +4562,10 @@
 				Society is @@.green;pleased@@ that $slaves[$i].slaveName is unable to become pregnant.
 				<<= FSChangePorn("Eugenics", 2)>>
 			<</if>>
+			<<if $slaves[$i].abortionTat > 0>>
+				The tally of aborted pregnancies adorning $his middle shows @@.green;just how responsible@@ of an owner $he has.
+				<<= FSChangePorn("Eugenics", 1)>>
+			<</if>>
 			<<if $slaves[$i].pregKnown == 1 && $eugenicsFullControl != 1>>
 				The Societal Elite @@.red;judge you@@ for keeping pregnant slaves. It falls to the slaveowner to deal with subhuman pregnancies and you are failing in your duties as a member of the Elite.
 				<<set $failedElite += 5+$slaves[$i].pregType>>
@@ -4664,6 +4676,14 @@
 			Society @@.green;approves@@ of $his many body modifications, which advances the public taste for such degradation of slave bodies.
 			<<= FSChangePorn("Degradationist", 1)>>
 		<</if>>
+		<<if $slaves[$i].abortionTat > 0 && $arcologies[0].FSRepopulationFocus == "unset">>
+			Society @@.green;<<if $arcologies[0].FSRestart != "unset">>greatly <</if>>approves@@ of $his tally of aborted children.
+			<<if $arcologies[0].FSRestart != "unset">>
+				<<= FSChangePorn("Degradationist", 2)>>
+			<<else>>
+				<<= FSChangePorn("Degradationist", 1)>>
+			<</if>>
+		<</if>>
 		<<if $slaves[$i].voice != 0>>
 			<<if $slaves[$i].lips > 95>>
 				Society @@.green;approves@@ of the way $his mouth, with its useless ability to speak, has been replaced with an appealing hole.
@@ -7338,6 +7358,11 @@
 			<<run SetBellySize($slaves[$i])>>
 			<<run cashX(-100000, "fines", $slaves[$i])>>
 			<<set $failedElite += 150>>
+			<<if $slaves[$i].abortionTat > -1>>
+				But hey, $he gets a tattoo signifying $his abortion. Was it worth it?
+				<<set $slaves[$i].abortionTat++>>
+				<<run cashX(forceNeg($surgeryCost), "slaveSurgery", $slaves[$i])>>
+			<</if>>
 		<</if>>
 	<</if>>
 <</if>>
@@ -7467,6 +7492,11 @@
 						<</if>>
 					<</if>>
 					<<set $slaves[$i].pregType = 0, WombFlush($slaves[$i]), $slaves[$i].pregKnown = 0, $slaves[$i].pregWeek = -4>>
+					<<if $slaves[$i].abortionTat > -1>>
+						The temporary tattoo of a child has been replaced with $his <<= ordinalSuffix($slaves[$i].abortionTat)>> crossed out infant.
+						<<set $slaves[$i].abortionTat++>>
+						<<run cashX(forceNeg($surgeryCost), "slaveSurgery", $slaves[$i])>>
+					<</if>>
 					<<run SetBellySize($slaves[$i])>>
 					<<set _miscarriage = 1>>
 				<</if>>
diff --git a/src/utility/descriptionWidgetsFlesh.tw b/src/utility/descriptionWidgetsFlesh.tw
index 6be7862ad2aa99725d9a4fa2412ef5c72e352d37..1beb378b29db77fd6b0880ddc44e53031cebcbd3 100644
--- a/src/utility/descriptionWidgetsFlesh.tw
+++ b/src/utility/descriptionWidgetsFlesh.tw
@@ -15380,6 +15380,15 @@ $He has
 					$He has an unrecognizable tattoo scrunched around $his navel.
 				<</if>>
 			<</if>>
+			<<if $activeSlave.abortionTat > 0>>
+				<<if $activeSlave.abortionTat > 1>>
+					$He has a series of $activeSlave.abortionTat crossed out baby-shaped tattoos<<if $activeSlave.pregKnown == 1>>, and one uncrossed one,<</if>> adorning $his stomach; one for each pregnancy $he's failed to complete.
+				<<else>>
+					$He has a single crossed out, baby-shaped tattoo<<if $activeSlave.pregKnown == 1>>, and one uncrossed one,<</if>> adorning $his stomach.
+				<</if>>
+			<<elseif $activeSlave.abortionTat == 0 && $activeSlave.pregKnown == 1>>
+				$He has a single baby-shaped temporary tattoo adorning $his stomach.
+			<</if>>
 			<<if ($activeSlave.brand != 0) && ($activeSlave.brandLocation == "belly")>>
 				$He has $activeSlave.brand branded into the flesh of $his $activeSlave.brandLocation.
 			<</if>>
@@ -18660,6 +18669,16 @@ $He has
 		<</if>>
 	<</if>>
 
+	<<if $activeSlave.abortionTat > 0>>
+		<<if $activeSlave.abortionTat > 1>>
+			$He has a series of $activeSlave.abortionTat crossed out baby-shaped tattoos<<if $activeSlave.pregKnown == 1>>, and one uncrossed one,<</if>> adorning $his stomach; one for each pregnancy $he's failed to complete.
+		<<else>>
+			$He has a single crossed out, baby-shaped tattoo<<if $activeSlave.pregKnown == 1>>, and one uncrossed one,<</if>> adorning $his stomach.
+		<</if>>
+	<<elseif $activeSlave.abortionTat == 0 && $activeSlave.pregKnown == 1>>
+		$He has a single baby-shaped temporary tattoo adorning $his stomach.
+	<</if>>
+
 	<<if ($activeSlave.brand != 0) && ($activeSlave.brandLocation == "belly")>>
 		$He has $activeSlave.brand branded into the flesh of $his $activeSlave.brandLocation.
 	<</if>>
diff --git a/src/utility/slaveCreationWidgets.tw b/src/utility/slaveCreationWidgets.tw
index 6c02ccdd7c05644604f0d216a500da64b24e0fa1..54881cbd58f7fe9cdef7a7a9bea9560d78a0c9cd 100644
--- a/src/utility/slaveCreationWidgets.tw
+++ b/src/utility/slaveCreationWidgets.tw
@@ -2483,6 +2483,11 @@
 		<<if random (1,100) > 90>>
 			<<set $activeSlave.hears = -2>>
 		<</if>>
+		<<if $arcologies[_market].FSRepopulationFocus == "unset" && $arcologies[_market].FSBodyPurist == "unset">>
+			<<if isFertile($activeSlave) && random(1,10) == 9>>
+				<<set $activeSlave.abortionTat = random(1, (Math.min($activeSlave.physicalAge-$fertilityAge, $activeSlave.physicalAge-$minimumSlaveAge))*2)>>
+			<</if>>
+		<</if>>
 	<</if>>
 
 	<<if $arcologies[_market].FSBodyPurist > 80>>