diff --git a/src/action/action_returngoods.cpp b/src/action/action_returngoods.cpp
index d1c1d15c8..6e26433d4 100644
--- a/src/action/action_returngoods.cpp
+++ b/src/action/action_returngoods.cpp
@@ -65,9 +65,9 @@ global void HandleActionReturnGoods(Unit* unit)
 	RefsDebugCheck( !destu->Refs );
 	++destu->Refs;
 	unit->Orders[0].RangeX=unit->Orders[0].RangeY=1;
-	unit->Orders[0].X=-1;
-	unit->Orders[0].Y=-1;
+	unit->Orders[0].X=unit->Orders[0].Y=-1;
 	unit->Orders[0].Action=UnitActionMineGold;
+	NewResetPath(unit);
 #else
 	if( !(destu=FindGoldDeposit(unit,unit->X,unit->Y)) ) {
 	    // No deposit -> can't return
@@ -101,11 +101,11 @@ global void HandleActionReturnGoods(Unit* unit)
 	RefsDebugCheck( !destu->Refs );
 	++destu->Refs;
 	unit->Orders[0].RangeX=unit->Orders[0].RangeY=1;
-	unit->Orders[0].X=-1;
-	unit->Orders[0].Y=-1;
+	unit->Orders[0].X=unit->Orders[0].Y=-1;
 	DebugLevel3("Return to %Zd=%d,%d\n"
 	    ,UnitNumber(destu),unit->Orders[0].X,unit->Orders[0].Y);
 	unit->Orders[0].Action=UnitActionHarvest;
+	NewResetPath(unit);
 #else
 	if( !(destu=FindWoodDeposit(unit->Player,unit->X,unit->Y)) ) {
 	    // No deposit -> can't return
@@ -142,11 +142,11 @@ global void HandleActionReturnGoods(Unit* unit)
 	RefsDebugCheck( !destu->Refs );
 	++destu->Refs;
 	unit->Orders[0].RangeX=unit->Orders[0].RangeY=1;
-	unit->Orders[0].X=-1;
-	unit->Orders[0].Y=-1;
+	unit->Orders[0].X=unit->Orders[0].Y=-1;
 	DebugLevel3("Return to %Zd=%d,%d\n"
 	    ,UnitNumber(destu),unit->Orders[0].X,unit->Orders[0].Y);
 	unit->Orders[0].Action=UnitActionHaulOil;
+	NewResetPath(unit);
 #else
 	if( !(destu=FindOilDeposit(unit->Player,unit->X,unit->Y)) ) {
 	    // No deposit -> can't return