diff --git a/Marlin/src/module/configuration_store.cpp b/Marlin/src/module/configuration_store.cpp
index 6c4d21f96cad980b4453f33d2f84f5c42c069d1a..48dd33649a877d76bfa75c8df6934077b38c6de2 100644
--- a/Marlin/src/module/configuration_store.cpp
+++ b/Marlin/src/module/configuration_store.cpp
@@ -330,10 +330,10 @@ void MarlinSettings::postprocess() {
   #define EEPROM_ASSERT(TST,ERR) if (!(TST)) do{ SERIAL_ERROR_START(); SERIAL_ERRORLNPGM(ERR); eeprom_error = true; }while(0)
 
   #if ENABLED(DEBUG_EEPROM_READWRITE)
-    #define _FIELD_TEST(FIELD)                                          \
-      EEPROM_ASSERT(                                                    \
-        eeprom_error || eeprom_index == offsetof(SettingsData, FIELD),  \
-        "Field " STRINGIFY(FIELD) " mismatch."                          \
+    #define _FIELD_TEST(FIELD) \
+      EEPROM_ASSERT( \
+        eeprom_error || eeprom_index == offsetof(SettingsData, FIELD) + EEPROM_OFFSET, \
+        "Field " STRINGIFY(FIELD) " mismatch." \
       )
   #else
     #define _FIELD_TEST(FIELD) NOOP
@@ -357,7 +357,7 @@ void MarlinSettings::postprocess() {
    */
   bool MarlinSettings::save() {
     float dummy = 0.0f;
-    char ver[4] = "000";
+    char ver[4] = "ERR";
 
     uint16_t working_crc = 0;
 
@@ -840,7 +840,7 @@ void MarlinSettings::postprocess() {
 
     // Version has to match or defaults are used
     if (strncmp(version, stored_ver, 3) != 0) {
-      if (stored_ver[0] != 'V') {
+      if (stored_ver[3] != '\0') {
         stored_ver[0] = '?';
         stored_ver[1] = '\0';
       }