Index: economy.c
===================================================================
--- economy.c	(revision 5962)
+++ economy.c	(working copy)
@@ -1345,7 +1345,7 @@
 				profit += DeliverGoods(v->cargo_count, v->cargo_type, v->cargo_source, last_visited, v->cargo_days);
 				result |= 1;
 				v->cargo_count = 0;
-			} else if (u->current_order.flags & (OF_UNLOAD | OF_TRANSFER)) {
+			} else if ((u->current_order.flags & (OF_UNLOAD | OF_TRANSFER)) && !(u->current_order.flags & OF_FULL_LOAD)) {
 				/* unload goods and let it wait at the station */
 				st->time_since_unload = 0;
 
@@ -1381,6 +1381,9 @@
 			if (v->cargo_count != 0) completely_empty = false;
 		}
 
+		/* don't unload goods that we picked up */
+		if (u->current_order.flags & OF_FULL_LOAD) u->current_order.flags |= OF_TRANSFER;
+		
 		/* don't pick up goods that we unloaded */
 		if (u->current_order.flags & OF_UNLOAD) continue;
 
