for (write_group = 0, write_test_bgn = 0; write_group
                        < RW_MGR_MEM_IF_WRITE_DQS_WIDTH; write_group++,
                        write_test_bgn += RW_MGR_MEM_DQ_PER_WRITE_DQS) {
-                       /* Initialized the group failure */
+
+                       /* Initialize the group failure */
                        group_failed = 0;
 
                        current_run = run_groups & ((1 <<
 
                        for (read_group = write_group * rwdqs_ratio,
                             read_test_bgn = 0;
-                            read_group < (write_group + 1) * rwdqs_ratio && group_failed == 0;
+                            read_group < (write_group + 1) * rwdqs_ratio;
                             read_group++,
                             read_test_bgn += RW_MGR_MEM_DQ_PER_READ_DQS) {
                                if (STATIC_CALIB_STEPS & CALIB_SKIP_VFIFO)
                                                               read_test_bgn))
                                        continue;
 
-                               group_failed = 1;
                                if (!(gbl->phy_debug_mode_flags & PHY_DEBUG_SWEEP_ALL_GROUPS))
                                        return 0;
+
+                               /* The group failed, we're done. */
+                               goto grp_failed;
                        }
 
                        /* Calibrate the output side */
-                       if (group_failed == 0) {
-                               for (rank_bgn = 0, sr = 0;
-                                    rank_bgn < RW_MGR_MEM_NUMBER_OF_RANKS;
-                                    rank_bgn += NUM_RANKS_PER_SHADOW_REG, sr++) {
-                                       if (STATIC_CALIB_STEPS & CALIB_SKIP_WRITES)
-                                               continue;
+                       for (rank_bgn = 0, sr = 0;
+                            rank_bgn < RW_MGR_MEM_NUMBER_OF_RANKS;
+                            rank_bgn += NUM_RANKS_PER_SHADOW_REG, sr++) {
+                               if (STATIC_CALIB_STEPS & CALIB_SKIP_WRITES)
+                                       continue;
 
-                                       /* Not needed in quick mode! */
-                                       if (STATIC_CALIB_STEPS & CALIB_SKIP_DELAY_SWEEPS)
-                                               continue;
+                               /* Not needed in quick mode! */
+                               if (STATIC_CALIB_STEPS & CALIB_SKIP_DELAY_SWEEPS)
+                                       continue;
 
-                                       /*
-                                        * Determine if this set of ranks
-                                        * should be skipped entirely.
-                                        */
-                                       if (param->skip_shadow_regs[sr])
-                                               continue;
+                               /*
+                                * Determine if this set of ranks
+                                * should be skipped entirely.
+                                */
+                               if (param->skip_shadow_regs[sr])
+                                       continue;
 
-                                       /* Calibrate WRITEs */
-                                       if (rw_mgr_mem_calibrate_writes(rank_bgn,
-                                                       write_group, write_test_bgn))
-                                               continue;
+                               /* Calibrate WRITEs */
+                               if (rw_mgr_mem_calibrate_writes(rank_bgn,
+                                               write_group, write_test_bgn))
+                                       continue;
 
-                                       group_failed = 1;
-                                       if (!(gbl->phy_debug_mode_flags & PHY_DEBUG_SWEEP_ALL_GROUPS))
-                                               return 0;
-                               }
+                               group_failed = 1;
+                               if (!(gbl->phy_debug_mode_flags & PHY_DEBUG_SWEEP_ALL_GROUPS))
+                                       return 0;
                        }
 
-                       if (group_failed == 0) {
-                               for (read_group = write_group * rwdqs_ratio,
-                                    read_test_bgn = 0;
-                                    read_group < (write_group + 1) * rwdqs_ratio && group_failed == 0;
-                                    read_group++,
-                                    read_test_bgn += RW_MGR_MEM_DQ_PER_READ_DQS) {
-                                       if (STATIC_CALIB_STEPS & CALIB_SKIP_WRITES)
-                                               continue;
-
-                                       if (rw_mgr_mem_calibrate_vfifo_end(read_group,
-                                                                       read_test_bgn))
-                                               continue;
-
-                                       group_failed = 1;
-                                       if (!(gbl->phy_debug_mode_flags & PHY_DEBUG_SWEEP_ALL_GROUPS))
-                                               return 0;
-                               }
+                       /* Some group failed, we're done. */
+                       if (group_failed)
+                               goto grp_failed;
+
+                       for (read_group = write_group * rwdqs_ratio,
+                            read_test_bgn = 0;
+                            read_group < (write_group + 1) * rwdqs_ratio;
+                            read_group++,
+                            read_test_bgn += RW_MGR_MEM_DQ_PER_READ_DQS) {
+                               if (STATIC_CALIB_STEPS & CALIB_SKIP_WRITES)
+                                       continue;
+
+                               if (rw_mgr_mem_calibrate_vfifo_end(read_group,
+                                                               read_test_bgn))
+                                       continue;
+
+                               if (!(gbl->phy_debug_mode_flags & PHY_DEBUG_SWEEP_ALL_GROUPS))
+                                       return 0;
+
+                               /* The group failed, we're done. */
+                               goto grp_failed;
                        }
 
-                       if (group_failed != 0)
-                               failing_groups++;
+                       /* No group failed, continue as usual. */
+                       continue;
+
+grp_failed:            /* A group failed, increment the counter. */
+                       failing_groups++;
                }
 
                /*