diff --git a/src/misc.py b/src/misc.py
index a55153c21a66184748f7422329e94111470c7920..90b1ebab23c4fd8608c03cc9e803b1ce8b84ab4d 100644
--- a/src/misc.py
+++ b/src/misc.py
@@ -65,7 +65,6 @@ class DataManager:
         # Also make the Sprite Renderer aware of current Data Manager object.
         sprite_renderer.data_manager = self
 
-
 # endregion Data Structures
 
 
@@ -881,13 +880,15 @@ def calc_traveling_salesman(data_manager, calc_new=True, debug=False):
     # Take optimal calculated distance. Compare against previously found optimal.
     # Only override if new path is superior.
     if (
-        data_manager.ideal_overall_path is None or
-        data_manager.ideal_overall_path['ordering'] == ['{0}, {1}'.format(roomba_x, roomba_y)] or
+        data_manager.ideal_overall_path['ordering'] == [roomba_tile_id] or
         calculated_path['total_cost'] < data_manager.ideal_overall_path['total_cost']
     ):
         # New calculated path is more more efficient. Update path values.
         data_manager.ideal_overall_path = calculated_path
-        data_manager.gui_data['optimal_counter'] = calculated_path['total_cost']
+        data_manager.ideal_overall_path['total_cost'] = calculated_path['total_cost']
+
+    # Ensure GUI always initializes to correct counter value.
+    data_manager.gui_data['optimal_counter'] = data_manager.ideal_overall_path['total_cost']
 
     # Optionally display debug tile sprites.
     if debug: