diff --git a/car-lib/api/system-current.txt b/car-lib/api/system-current.txt
index 8dc3ad2..18239c4 100644
--- a/car-lib/api/system-current.txt
+++ b/car-lib/api/system-current.txt
@@ -626,13 +626,13 @@
   }
 
   public static abstract class CarHvacManager.HvacPropertyId implements java.lang.annotation.Annotation {
-    field public static final int AIR_RECIRCULATION_ON = 4; // 0x4
-    field public static final int AUTOMATIC_MODE_ON = 3; // 0x3
     field public static final int MAX_GLOBAL_PROPERTY_ID = 16383; // 0x3fff
     field public static final int MIRROR_DEFROSTER_ON = 1; // 0x1
-    field public static final int STEERING_WHEEL_TEMP = 5; // 0x5
+    field public static final int STEERING_WHEEL_TEMP = 2; // 0x2
     field public static final int WINDOW_DEFROSTER_ON = 20481; // 0x5001
     field public static final int ZONED_AC_ON = 16393; // 0x4009
+    field public static final int ZONED_AIR_RECIRCULATION_ON = 16395; // 0x400b
+    field public static final int ZONED_AUTOMATIC_MODE_ON = 16394; // 0x400a
     field public static final int ZONED_FAN_POSITION = 16391; // 0x4007
     field public static final int ZONED_FAN_POSITION_AVAILABLE = 16390; // 0x4006
     field public static final int ZONED_FAN_SPEED_RPM = 16389; // 0x4005
diff --git a/car-lib/src/android/car/hardware/hvac/CarHvacManager.java b/car-lib/src/android/car/hardware/hvac/CarHvacManager.java
index 82d75de..6eb82a4 100644
--- a/car-lib/src/android/car/hardware/hvac/CarHvacManager.java
+++ b/car-lib/src/android/car/hardware/hvac/CarHvacManager.java
@@ -53,8 +53,6 @@
      */
     @IntDef({
             HvacPropertyId.MIRROR_DEFROSTER_ON,
-            HvacPropertyId.AUTOMATIC_MODE_ON,
-            HvacPropertyId.AIR_RECIRCULATION_ON,
             HvacPropertyId.STEERING_WHEEL_TEMP,
             HvacPropertyId.MAX_GLOBAL_PROPERTY_ID,
             HvacPropertyId.ZONED_TEMP_SETPOINT,
@@ -66,6 +64,8 @@
             HvacPropertyId.ZONED_FAN_POSITION,
             HvacPropertyId.ZONED_SEAT_TEMP,
             HvacPropertyId.ZONED_AC_ON,
+            HvacPropertyId.ZONED_AUTOMATIC_MODE_ON,
+            HvacPropertyId.ZONED_AIR_RECIRCULATION_ON,
             HvacPropertyId.WINDOW_DEFROSTER_ON,
     })
     public @interface HvacPropertyId {
@@ -75,13 +75,9 @@
          */
         /** Mirror defrosters state, bool. */
         int MIRROR_DEFROSTER_ON = 0x0001;
-        /** HVAC is in automatic mode, bool. */
-        int AUTOMATIC_MODE_ON = 0x0003;
-        /** Air recirculation is active, bool. */
-        int AIR_RECIRCULATION_ON = 0x0004;
         /** Steering wheel temp:  negative values indicate cooling, positive values indicate
          * heat, int. */
-        int STEERING_WHEEL_TEMP = 0x0005;
+        int STEERING_WHEEL_TEMP = 0x0002;
 
         /** The maximum id that can be assigned to global (non-zoned) property. */
         int MAX_GLOBAL_PROPERTY_ID = 0x3fff;
@@ -111,6 +107,10 @@
         int ZONED_SEAT_TEMP = 0x4008;
         /** Air conditioner state, bool */
         int ZONED_AC_ON = 0x4009;
+        /** HVAC is in automatic mode, bool. */
+        int ZONED_AUTOMATIC_MODE_ON = 0x400A;
+        /** Air recirculation is active, bool. */
+        int ZONED_AIR_RECIRCULATION_ON = 0x400B;
         /** Defroster is based off of window position, bool */
         int WINDOW_DEFROSTER_ON = 0x5001;
     }
diff --git a/service/src/com/android/car/hal/HvacHalService.java b/service/src/com/android/car/hal/HvacHalService.java
index 042819d..ff244d5 100644
--- a/service/src/com/android/car/hal/HvacHalService.java
+++ b/service/src/com/android/car/hal/HvacHalService.java
@@ -210,6 +210,8 @@
                 return VehicleNetworkConsts.VEHICLE_PROPERTY_HVAC_DEFROSTER;
             case HvacPropertyId.ZONED_AC_ON:
                 return VehicleNetworkConsts.VEHICLE_PROPERTY_HVAC_AC_ON;
+            case HvacPropertyId.ZONED_AIR_RECIRCULATION_ON:
+                return VehicleNetworkConsts.VEHICLE_PROPERTY_HVAC_RECIRC_ON;
             default:
                 throw new IllegalArgumentException("hvacPropId " + hvacPropId + " is not supported");
         }
@@ -230,6 +232,8 @@
                 return HvacPropertyId.WINDOW_DEFROSTER_ON;
             case VehicleNetworkConsts.VEHICLE_PROPERTY_HVAC_AC_ON:
                 return HvacPropertyId.ZONED_AC_ON;
+            case VehicleNetworkConsts.VEHICLE_PROPERTY_HVAC_RECIRC_ON:
+                return HvacPropertyId.ZONED_AIR_RECIRCULATION_ON;
             default:
                 throw new IllegalArgumentException("halPropId " + halPropId + " is not supported");
         }
diff --git a/tests/android_car_api_test/src/com/android/car/apitest/CarHvacManagerTest.java b/tests/android_car_api_test/src/com/android/car/apitest/CarHvacManagerTest.java
index 0542f2f..a48c4d4 100644
--- a/tests/android_car_api_test/src/com/android/car/apitest/CarHvacManagerTest.java
+++ b/tests/android_car_api_test/src/com/android/car/apitest/CarHvacManagerTest.java
@@ -57,8 +57,6 @@
     private void assertTypeAndZone(CarPropertyConfig property) {
         switch (property.getPropertyId()) {
             case HvacPropertyId.MIRROR_DEFROSTER_ON: // non-zoned bool
-            case HvacPropertyId.AUTOMATIC_MODE_ON:
-            case HvacPropertyId.AIR_RECIRCULATION_ON:
                 assertEquals(Boolean.class, property.getPropertyType());
                 assertTrue(property.isGlobalProperty());
                 break;
@@ -76,6 +74,8 @@
             case HvacPropertyId.ZONED_TEMP_IS_FAHRENHEIT: // zoned boolean
             case HvacPropertyId.ZONED_AC_ON:
             case HvacPropertyId.WINDOW_DEFROSTER_ON:
+            case HvacPropertyId.ZONED_AUTOMATIC_MODE_ON:
+            case HvacPropertyId.ZONED_AIR_RECIRCULATION_ON:
                 assertEquals(Boolean.class, property.getPropertyType());
                 assertFalse(property.isGlobalProperty());
                 break;
