diff --git a/acts/framework/acts/test_utils/wifi/rtt/rtt_test_utils.py b/acts/framework/acts/test_utils/wifi/rtt/rtt_test_utils.py
index bd82a86..29fac81 100644
--- a/acts/framework/acts/test_utils/wifi/rtt/rtt_test_utils.py
+++ b/acts/framework/acts/test_utils/wifi/rtt/rtt_test_utils.py
@@ -244,6 +244,14 @@
                          the reference LCI.
      - any_lcr_mismatch: True/False - checks if all LCR results are identical to
                          the reference LCR.
+     - num_attempted_measurements: extracted list of all of the individual
+                                   number of attempted measurements.
+     - num_successful_measurements: extracted list of all of the individual
+                                    number of successful measurements.
+     - invalid_num_attempted: True/False - checks if number of attempted
+                              measurements is non-zero for successful results.
+     - invalid_num_successful: True/False - checks if number of successful
+                               measurements is non-zero for successful results.
 
   Args:
     results: List of RTT results.
@@ -264,6 +272,8 @@
   stats['num_invalid_rssi'] = 0
   stats['any_lci_mismatch'] = False
   stats['any_lcr_mismatch'] = False
+  stats['invalid_num_attempted'] = False
+  stats['invalid_num_successful'] = False
 
   range_max_mm = range_reference_mm + range_margin_mm
   range_min_mm = range_reference_mm - range_margin_mm
@@ -303,10 +313,17 @@
     if not min_rssi <= rssi <= 0:
       stats['num_invalid_rssi'] = stats['num_invalid_rssi'] + 1
 
-    num_attempted_measurements.append(
-      result[rconsts.EVENT_CB_RANGING_KEY_NUM_ATTEMPTED_MEASUREMENTS])
-    num_successful_measurements.append(
-        result[rconsts.EVENT_CB_RANGING_KEY_NUM_SUCCESSFUL_MEASUREMENTS])
+    num_attempted = result[
+      rconsts.EVENT_CB_RANGING_KEY_NUM_ATTEMPTED_MEASUREMENTS]
+    num_attempted_measurements.append(num_attempted)
+    if num_attempted == 0:
+      stats['invalid_num_attempted'] = True
+
+    num_successful = result[
+      rconsts.EVENT_CB_RANGING_KEY_NUM_SUCCESSFUL_MEASUREMENTS]
+    num_successful_measurements.append(num_successful)
+    if num_successful == 0:
+      stats['invalid_num_successful'] = True
 
     lcis.append(result[rconsts.EVENT_CB_RANGING_KEY_LCI])
     if (result[rconsts.EVENT_CB_RANGING_KEY_LCI] != reference_lci):
diff --git a/acts/framework/acts/test_utils/wifi/wifi_power_test_utils.py b/acts/framework/acts/test_utils/wifi/wifi_power_test_utils.py
index e2a91aa..421c7ce 100644
--- a/acts/framework/acts/test_utils/wifi/wifi_power_test_utils.py
+++ b/acts/framework/acts/test_utils/wifi/wifi_power_test_utils.py
@@ -190,7 +190,7 @@
             gMDTIM_old) == gMaxLIModulatedDTIM:
         ad.log.info('Current DTIM is already the desired value,'
                     'no need to reset it')
-        return
+        return 0
 
     gE_new = ENABLED_MODULATED_DTIM + str(gEnableModulatedDTIM)
     gM_new = MAX_MODULATED_DTIM + str(gMaxLIModulatedDTIM)
@@ -204,7 +204,10 @@
     push_file_to_phone(ad, ini_file_local, ini_file_phone)
     ad.log.info('DTIM changes checked in and rebooting...')
     ad.reboot()
+    # Wait for auto-wifi feature to start
+    time.sleep(20)
     ad.log.info('DTIM updated and device back from reboot')
+    return 1
 
 
 def push_file_to_phone(ad, file_local, file_phone):
diff --git a/acts/tests/google/power/wifi/PowerWiFidtimTest.py b/acts/tests/google/power/wifi/PowerWiFidtimTest.py
index 28a340a..c4a1090 100644
--- a/acts/tests/google/power/wifi/PowerWiFidtimTest.py
+++ b/acts/tests/google/power/wifi/PowerWiFidtimTest.py
@@ -34,10 +34,12 @@
         indices = [2, 4, 6]
         self.decode_test_configs(attrs, indices)
         # Initialize the dut to rock-bottom state
-        wputils.change_dtim(
+        rebooted = wputils.change_dtim(
             self.dut,
             gEnableModulatedDTIM=int(self.test_configs.dtim),
             gMaxLIModulatedDTIM=dtim_max)
+        if rebooted:
+            self.dut_rockbottom()
         self.dut.log.info('DTIM value of the phone is now {}'.format(
             self.test_configs.dtim))
         self.setup_ap_connection(
diff --git a/acts/tests/google/power/wifi/PowerWiFimulticastTest.py b/acts/tests/google/power/wifi/PowerWiFimulticastTest.py
index 6b9896c..f43f6a5 100644
--- a/acts/tests/google/power/wifi/PowerWiFimulticastTest.py
+++ b/acts/tests/google/power/wifi/PowerWiFimulticastTest.py
@@ -38,9 +38,11 @@
         indices = [2, 4]
         self.decode_test_configs(attrs, indices)
         # Change DTIMx1 on the phone to receive all Multicast packets
-        wputils.change_dtim(
+        rebooted = wputils.change_dtim(
             self.dut, gEnableModulatedDTIM=1, gMaxLIModulatedDTIM=10)
         self.dut.log.info('DTIM value of the phone is now DTIMx1')
+        if rebooted:
+            self.dut_rockbottom()
 
         self.setup_ap_connection(
             self.main_network[self.test_configs.wifi_band])
diff --git a/acts/tests/google/wifi/rtt/functional/RangeApSupporting11McTest.py b/acts/tests/google/wifi/rtt/functional/RangeApSupporting11McTest.py
index 523fd0c..98586cb 100644
--- a/acts/tests/google/wifi/rtt/functional/RangeApSupporting11McTest.py
+++ b/acts/tests/google/wifi/rtt/functional/RangeApSupporting11McTest.py
@@ -60,6 +60,10 @@
                            "LCI mismatch", extras=stats)
       asserts.assert_false(stat['any_lcr_mismatch'],
                            "LCR mismatch", extras=stats)
+      asserts.assert_false(stat['invalid_num_attempted'],
+                           "Invalid (0) number of attempts", extras=stats)
+      asserts.assert_false(stat['invalid_num_successful'],
+                           "Invalid (0) number of successes", extras=stats)
       asserts.assert_equal(stat['num_invalid_rssi'], 0, "Invalid RSSI",
                           extras=stats)
       asserts.assert_true(stat['num_failures'] <=
diff --git a/acts/tests/google/wifi/rtt/functional/RangeAwareTest.py b/acts/tests/google/wifi/rtt/functional/RangeAwareTest.py
index a2d5286..d4b7d41 100644
--- a/acts/tests/google/wifi/rtt/functional/RangeAwareTest.py
+++ b/acts/tests/google/wifi/rtt/functional/RangeAwareTest.py
@@ -229,6 +229,10 @@
                          "LCI mismatch", extras=extras)
     asserts.assert_false(stats['any_lcr_mismatch'],
                          "LCR mismatch", extras=extras)
+    asserts.assert_false(stats['invalid_num_attempted'],
+                         "Invalid (0) number of attempts", extras=stats)
+    asserts.assert_false(stats['invalid_num_successful'],
+                         "Invalid (0) number of successes", extras=stats)
     asserts.assert_equal(stats['num_invalid_rssi'], 0, "Invalid RSSI",
                          extras=extras)
     asserts.assert_true(
