diff --git a/health/BatteryDefender.cpp b/health/BatteryDefender.cpp
index 37d24e5..5873567 100644
--- a/health/BatteryDefender.cpp
+++ b/health/BatteryDefender.cpp
@@ -213,12 +213,15 @@
             clearStateData();
             break;
 
-        case STATE_CONNECTED:
+        case STATE_CONNECTED: {
             addTimeToChargeTimers();
-            if (props->batteryLevel == kChargeHighCapacityLevel) {
+
+            const int triggerLevel = android::base::GetIntProperty(
+                    kPropBatteryDefenderCtrlTriggerSOC, kChargeHighCapacityLevel, 0, 100);
+            if (props->batteryLevel >= triggerLevel) {
                 mHasReachedHighCapacityLevel = true;
             }
-            break;
+        } break;
 
         case STATE_ACTIVE:
             addTimeToChargeTimers();
diff --git a/health/include/pixelhealth/BatteryDefender.h b/health/include/pixelhealth/BatteryDefender.h
index d6ad0cc..bf3c492 100644
--- a/health/include/pixelhealth/BatteryDefender.h
+++ b/health/include/pixelhealth/BatteryDefender.h
@@ -99,6 +99,8 @@
             "vendor.battery.defender.ctrl.recharge_soc_start";
     const char *const kPropBatteryDefenderCtrlStopSOC =
             "vendor.battery.defender.ctrl.recharge_soc_stop";
+    const char *const kPropBatteryDefenderCtrlTriggerSOC =
+            "vendor.battery.defender.ctrl.trigger_soc";
 
     // Default thresholds
     const bool kDefaultEnable = true;
diff --git a/health/test/TestBatteryDefender.cpp b/health/test/TestBatteryDefender.cpp
index 1894982..f050ccc 100644
--- a/health/test/TestBatteryDefender.cpp
+++ b/health/test/TestBatteryDefender.cpp
@@ -150,6 +150,7 @@
 const char *kPropBatteryDefenderCtrlResumeTime = "vendor.battery.defender.ctrl.resume_time";
 const char *kPropBatteryDefenderCtrlStartSOC = "vendor.battery.defender.ctrl.recharge_soc_start";
 const char *kPropBatteryDefenderCtrlStopSOC = "vendor.battery.defender.ctrl.recharge_soc_stop";
+const char *kPropBatteryDefenderCtrlTriggerSOC = "vendor.battery.defender.ctrl.trigger_soc";
 
 static void enableDefender(void) {
     ON_CALL(*mock, GetIntProperty(kPropChargeLevelVendorStart, _, _, _)).WillByDefault(Return(0));
@@ -182,6 +183,9 @@
             .WillByDefault(Return(70));
     ON_CALL(*mock, GetIntProperty(kPropBatteryDefenderCtrlStopSOC, _, _, _))
             .WillByDefault(Return(80));
+
+    ON_CALL(*mock, GetIntProperty(kPropBatteryDefenderCtrlTriggerSOC, _, _, _))
+            .WillByDefault(Return(100));
 }
 
 static void capacityReached(void) {
@@ -262,7 +266,7 @@
     battDefender.update(&props);
 
     testvar_systemTimeSecs += MIN_TIME_BETWEEN_FILE_UPDATES;
-    time_expected = DEFAULT_TIME_TO_ACTIVATE_SECONDS - 1 + MIN_TIME_BETWEEN_FILE_UPDATES;
+    time_expected += MIN_TIME_BETWEEN_FILE_UPDATES;
     EXPECT_CALL(*mock, WriteStringToFile(std::to_string(time_expected),
                                          kPathPersistChargerPresentTime, _));
     EXPECT_CALL(*mock, SetProperty(kPropBatteryDefenderState, "ACTIVE"));
@@ -287,6 +291,11 @@
     testvar_systemTimeSecs += DEFAULT_TIME_TO_ACTIVATE_SECONDS + 1;
     EXPECT_CALL(*mock, SetProperty(kPropBatteryDefenderState, "CONNECTED"));
     battDefender.update(&props);
+
+    // Would be active if mHasReachedHighCapacityLevel was true
+    testvar_systemTimeSecs += DEFAULT_TIME_TO_ACTIVATE_SECONDS + 1;
+    EXPECT_CALL(*mock, SetProperty(kPropBatteryDefenderState, "CONNECTED"));
+    battDefender.update(&props);
 }
 
 TEST_F(BatteryDefenderTest, TriggerTime) {
