diff --git a/libpldmresponder/pdr_numeric_effecter.hpp b/libpldmresponder/pdr_numeric_effecter.hpp
index 6e85642..2819b07 100644
--- a/libpldmresponder/pdr_numeric_effecter.hpp
+++ b/libpldmresponder/pdr_numeric_effecter.hpp
@@ -106,28 +106,28 @@
         switch (pdr->effecter_data_size)
         {
             case PLDM_EFFECTER_DATA_SIZE_UINT8:
-                pdr->max_set_table.value_u8 = e.value("max_set_table", 0);
-                pdr->min_set_table.value_u8 = e.value("min_set_table", 0);
+                pdr->max_settable.value_u8 = e.value("max_settable", 0);
+                pdr->min_settable.value_u8 = e.value("min_settable", 0);
                 break;
             case PLDM_EFFECTER_DATA_SIZE_SINT8:
-                pdr->max_set_table.value_s8 = e.value("max_set_table", 0);
-                pdr->min_set_table.value_s8 = e.value("min_set_table", 0);
+                pdr->max_settable.value_s8 = e.value("max_settable", 0);
+                pdr->min_settable.value_s8 = e.value("min_settable", 0);
                 break;
             case PLDM_EFFECTER_DATA_SIZE_UINT16:
-                pdr->max_set_table.value_u16 = e.value("max_set_table", 0);
-                pdr->min_set_table.value_u16 = e.value("min_set_table", 0);
+                pdr->max_settable.value_u16 = e.value("max_settable", 0);
+                pdr->min_settable.value_u16 = e.value("min_settable", 0);
                 break;
             case PLDM_EFFECTER_DATA_SIZE_SINT16:
-                pdr->max_set_table.value_s16 = e.value("max_set_table", 0);
-                pdr->min_set_table.value_s16 = e.value("min_set_table", 0);
+                pdr->max_settable.value_s16 = e.value("max_settable", 0);
+                pdr->min_settable.value_s16 = e.value("min_settable", 0);
                 break;
             case PLDM_EFFECTER_DATA_SIZE_UINT32:
-                pdr->max_set_table.value_u32 = e.value("max_set_table", 0);
-                pdr->min_set_table.value_u32 = e.value("min_set_table", 0);
+                pdr->max_settable.value_u32 = e.value("max_settable", 0);
+                pdr->min_settable.value_u32 = e.value("min_settable", 0);
                 break;
             case PLDM_EFFECTER_DATA_SIZE_SINT32:
-                pdr->max_set_table.value_s32 = e.value("max_set_table", 0);
-                pdr->min_set_table.value_s32 = e.value("min_set_table", 0);
+                pdr->max_settable.value_s32 = e.value("max_settable", 0);
+                pdr->min_settable.value_s32 = e.value("min_settable", 0);
                 break;
             default:
                 break;
diff --git a/libpldmresponder/platform_numeric_effecter.hpp b/libpldmresponder/platform_numeric_effecter.hpp
index d07edda..51866ce 100644
--- a/libpldmresponder/platform_numeric_effecter.hpp
+++ b/libpldmresponder/platform_numeric_effecter.hpp
@@ -46,9 +46,9 @@
         {
             auto rawValue = static_cast<uint8_t>(
                 round(effecterValue - pdr->offset) / pdr->resolution);
-            if (pdr->min_set_table.value_u8 < pdr->max_set_table.value_u8 &&
-                (rawValue < pdr->min_set_table.value_u8 ||
-                 rawValue > pdr->max_set_table.value_u8))
+            if (pdr->min_settable.value_u8 < pdr->max_settable.value_u8 &&
+                (rawValue < pdr->min_settable.value_u8 ||
+                 rawValue > pdr->max_settable.value_u8))
             {
                 rc = PLDM_ERROR_INVALID_DATA;
             }
@@ -69,9 +69,9 @@
         {
             auto rawValue = static_cast<int8_t>(
                 round(effecterValue - pdr->offset) / pdr->resolution);
-            if (pdr->min_set_table.value_s8 < pdr->max_set_table.value_s8 &&
-                (rawValue < pdr->min_set_table.value_s8 ||
-                 rawValue > pdr->max_set_table.value_s8))
+            if (pdr->min_settable.value_s8 < pdr->max_settable.value_s8 &&
+                (rawValue < pdr->min_settable.value_s8 ||
+                 rawValue > pdr->max_settable.value_s8))
             {
                 rc = PLDM_ERROR_INVALID_DATA;
             }
@@ -82,9 +82,9 @@
         {
             auto rawValue = static_cast<uint16_t>(
                 round(effecterValue - pdr->offset) / pdr->resolution);
-            if (pdr->min_set_table.value_u16 < pdr->max_set_table.value_u16 &&
-                (rawValue < pdr->min_set_table.value_u16 ||
-                 rawValue > pdr->max_set_table.value_u16))
+            if (pdr->min_settable.value_u16 < pdr->max_settable.value_u16 &&
+                (rawValue < pdr->min_settable.value_u16 ||
+                 rawValue > pdr->max_settable.value_u16))
             {
                 rc = PLDM_ERROR_INVALID_DATA;
             }
@@ -105,9 +105,9 @@
         {
             auto rawValue = static_cast<int16_t>(
                 round(effecterValue - pdr->offset) / pdr->resolution);
-            if (pdr->min_set_table.value_s16 < pdr->max_set_table.value_s16 &&
-                (rawValue < pdr->min_set_table.value_s16 ||
-                 rawValue > pdr->max_set_table.value_s16))
+            if (pdr->min_settable.value_s16 < pdr->max_settable.value_s16 &&
+                (rawValue < pdr->min_settable.value_s16 ||
+                 rawValue > pdr->max_settable.value_s16))
             {
                 rc = PLDM_ERROR_INVALID_DATA;
             }
@@ -128,9 +128,9 @@
         {
             auto rawValue = static_cast<uint32_t>(
                 round(effecterValue - pdr->offset) / pdr->resolution);
-            if (pdr->min_set_table.value_u32 < pdr->max_set_table.value_u32 &&
-                (rawValue < pdr->min_set_table.value_u32 ||
-                 rawValue > pdr->max_set_table.value_u32))
+            if (pdr->min_settable.value_u32 < pdr->max_settable.value_u32 &&
+                (rawValue < pdr->min_settable.value_u32 ||
+                 rawValue > pdr->max_settable.value_u32))
             {
                 rc = PLDM_ERROR_INVALID_DATA;
             }
@@ -151,9 +151,9 @@
         {
             auto rawValue = static_cast<int32_t>(
                 round(effecterValue - pdr->offset) / pdr->resolution);
-            if (pdr->min_set_table.value_s32 < pdr->max_set_table.value_s32 &&
-                (rawValue < pdr->min_set_table.value_s32 ||
-                 rawValue > pdr->max_set_table.value_s32))
+            if (pdr->min_settable.value_s32 < pdr->max_settable.value_s32 &&
+                (rawValue < pdr->min_settable.value_s32 ||
+                 rawValue > pdr->max_settable.value_s32))
             {
                 rc = PLDM_ERROR_INVALID_DATA;
             }
