diff --git a/src/js/datatypeCleanupJS.js b/src/js/datatypeCleanupJS.js
index 910e581b39796acfa693b60d9d8926a5da94fc28..798b625e242d795b0d7071fb9c3a8529ed6ecdae 100644
--- a/src/js/datatypeCleanupJS.js
+++ b/src/js/datatypeCleanupJS.js
@@ -1978,7 +1978,7 @@ App.Entity.Utils.RARuleDatatypeCleanup = function() {
 	function replaceDefaultValues(o) {
 		for (const k in o) {
 			const v = o[k];
-			if (v === "no default setting" || v === undefined) {
+			if (v === "no default setting" || v === "no default change" || Number.isNaN(v) || v === undefined) {
 				o[k] = null;
 			} else if (typeof v === 'object') {
 				replaceDefaultValues(v);
@@ -2018,7 +2018,7 @@ App.Entity.Utils.RARuleDatatypeCleanup = function() {
 
 		function ensureProps(obj, props) {
 			props.forEach(prop => {
-				if (!obj.hasOwnProperty(prop) || obj[prop] === undefined) {
+				if (obj[prop] === undefined) {
 					obj[prop] = null;
 				}
 			});
@@ -2036,16 +2036,21 @@ App.Entity.Utils.RARuleDatatypeCleanup = function() {
 		function ensureNumTarget(val) {
 			switch (typeof val) {
 				case 'number':
-					return App.RA.makeTarget('==', val);
+					return Number.isNaN(val) ? null : App.RA.makeTarget('==', val);
 				case 'string':
 						return App.RA.makeTarget('==', parseInt(val));
+				case 'object':
+					if (val.hasOwnProperty('val') && Number.isNaN(val.val)) {
+						return null;
+					}
+					return val;
 				default:
 					return val;
 			}
 		}
 
 		ensureProps(set, [
-			'haircuts', 'label', 'removeLabel', 'skinColor',
+			'haircuts', 'label', 'removeLabel', 'skinColor', 'markings',
 			'earwear', 'toyHole', 'pornFeed', 'legAccessory', 'hyper_drugs'
 		]);