diff --git a/scripts/ai/tpl/escort.lua b/scripts/ai/tpl/escort.lua
index 47f34d5..82f772c 100644
--- a/scripts/ai/tpl/escort.lua
+++ b/scripts/ai/tpl/escort.lua
@@ -74,7 +74,7 @@ function flyback()
     ai.dock(target)
 
   -- Far away, must approach.
-  elseif dir < 10 and dist > 200 then
+  elseif dir < 10 then
     ai.accel()
   end
 end
diff --git a/src/pilot.c b/src/pilot.c
index 593431f..e218983 100644
--- a/src/pilot.c
+++ b/src/pilot.c
@@ -592,6 +592,14 @@ int pilot_dock(Pilot* p, Pilot* target) {
   int i;
   Outfit* o;
 
+  /* Must be close. */
+  if(vect_dist(&p->solid->pos, &target->solid->pos) > 30.)
+    return -1;
+
+  /* Cannot be going much faster. */
+  if(vect_dist(&p->solid->vel, &target->solid->vel) > 2*MIN_VEL_ERR)
+    return -1;
+
   /* Check to see if target has an available bay. */
   for(i = 0; i < target->noutfits; i++) {
     if(outfit_isFighterBay(target->outfits[i].outfit)) {