diff --git a/common/aicore/path_finding.c b/common/aicore/path_finding.c
index 19be518..0e9414a 100644
--- a/common/aicore/path_finding.c
+++ b/common/aicore/path_finding.c
@@ -612,7 +612,11 @@ static bool pf_normal_map_iterate(struct pf_map *pfm)
       }
 
       /* Total cost at tile1. Cost may be negative; see pf_turns(). */
-      cost += node->cost;
+      if (node1->behavior == TB_DONT_LEAVE) {
+        cost = node->cost;
+      } else {
+        cost += node->cost;
+      }
 
       /* Evaluate the extra cost if it's relevant */
       if (NULL != params->get_EC) {
@@ -1357,7 +1361,11 @@ static bool pf_danger_map_iterate(struct pf_map *pfm)
         }
 
         /* Total cost at 'tile1'. */
-        cost += loc_cost;
+        if (node1->behavior == TB_DONT_LEAVE) {
+          cost = loc_cost;
+        } else {
+          cost += loc_cost;
+        }
 
         /* Evaluate the extra cost of the destination, if it's relevant. */
         if (NULL != params->get_EC) {
@@ -2327,7 +2335,11 @@ static bool pf_fuel_map_iterate(struct pf_map *pfm)
         }
 
         /* Total cost at 'tile1' */
-        cost += loc_cost;
+        if (node1->behavior == TB_DONT_LEAVE) {
+          cost = loc_cost;
+        } else {
+          cost += loc_cost;
+        }
 
         /* Evaluate the extra cost of the destination, if it's relevant. */
         if (NULL != params->get_EC) {
diff --git a/common/aicore/path_finding.h b/common/aicore/path_finding.h
index 3066507..a867186 100644
--- a/common/aicore/path_finding.h
+++ b/common/aicore/path_finding.h
@@ -271,7 +271,9 @@
 enum tile_behavior {
   TB_IGNORE = 0,        /* This one will be ignored. */
   TB_DONT_LEAVE,        /* Paths can lead _to_ such tile, but are not
-                         * allowed to go _through_. */
+                         * allowed to go _through_. This move is evaluated
+                         * as free moving as we don't care how much it will
+                         * cost (e.g. for attack or caravan arrival). */
   TB_NORMAL             /* Well, normal .*/
 };
 
