diff --git a/src/js/DefaultRules.js b/src/js/DefaultRules.js
index d50b1b87a634c54300f1338c25088a5369075e2a..bd0a2bed181a70e3615958ba6347d681ebf3d89a 100644
--- a/src/js/DefaultRules.js
+++ b/src/js/DefaultRules.js
@@ -1023,6 +1023,25 @@ window.DefaultRules = (function() {
 	 * @param {App.RA.RuleSetters} rule
 	 */
 	function ProcessAbortions(slave, rule) {
+		function conditionalTermination(slave, predicate) {
+			let res = false;
+			if (slave.preg < 4) {
+				let WL = slave.womb.length;
+				for (let index = 0; index < WL; index++) {
+					if (predicate(slave.womb[index])) {
+						WombRemoveFetus(slave, index);
+						index--;
+						WL--;
+						res = true;
+					}
+				}
+				if (WL === 0) {
+					TerminatePregnancy(slave);
+				}
+			}
+			return res;
+		}
+
 		if ((rule.abortion !== undefined) && (rule.abortion !== null)) {
 			for (const ar of rule.abortion) {
 				if (ar === "all") {
@@ -1077,49 +1096,16 @@ window.DefaultRules = (function() {
 					V.reservedChildrenNursery = FetusGlobalReserveCount("nursery");
 					TerminatePregnancy(slave);
 				} else if (ar === "male") {
-					if (slave.preg < 4) {
-						let WL = slave.womb.length;
-						for (let index = 0; index < WL; index++) {
-							if (slave.womb[index].genetics.gender === "XY") {
-								WombRemoveFetus(slave, index);
-								index--;
-								WL--;
-							}
-						}
-						if (WL === 0) {
-							TerminatePregnancy(slave);
-						}
+					if (conditionalTermination(slave, fetus => fetus.genetics.gender === "XY")) {
 						r += `<br>${slave.slaveName}'s male fetuses have been terminated.`;
 					}
 				} else if (ar === "female") {
-					if (slave.preg < 4) {
-						let WL = slave.womb.length;
-						for (let index = 0; index < WL; index++) {
-							if (slave.womb[index].genetics.gender === "XX") {
-								WombRemoveFetus(slave, index);
-								index--;
-								WL--;
-							}
-						}
-						if (WL === 0) {
-							TerminatePregnancy(slave);
-						}
+					if (conditionalTermination(slave, fetus => fetus.genetics.gender === "XX")) {
 						r += `<br>${slave.slaveName}'s female fetuses have been terminated.`;
 					}
 				} else if (ar.startsWith("race:")){ // ar is the race name in the notation "race:<lowercase_race_name>"
 					const race = ar.substr("race:".length);
-					if (slave.preg < 4) {
-						let WL = slave.womb.length;
-						for (let index = 0; index < WL; index++) {
-							if (slave.womb[index].genetics.race === race) {
-								WombRemoveFetus(slave, index);
-								index--;
-								WL--;
-							}
-						}
-						if (WL === 0) {
-							TerminatePregnancy(slave);
-						}
+					if (conditionalTermination(slave, fetus => fetus.genetics.race === race)) {
 						r += `<br>${slave.slaveName}'s ${race} fetuses have been terminated.`;
 					}
 				}