diff --git simutrans/text/en/convoiinfo.txt simutrans/text/en/convoiinfo.txt
index 1c0af9524..e7e29297d 100644
--- simutrans/text/en/convoiinfo.txt
+++ simutrans/text/en/convoiinfo.txt
@@ -91,4 +91,4 @@ The option-button (which changes its name with your selection) sorts the list of
  - <em>via (amount):</em> sorts items carried by quantity headed to first transfer <a href="station.txt">stop</a>.<br>
  - <em>amount:</em> sorts items carried by quantity in descending order.
 </p>
- - <em>via (player):</em> sorts items carried by quantity headed to transfer <a href="station.txt">stops</a> of different players.<br>
+ - <em>via (player):</em> sorts items carried by quantity headed to transfer <a href="station.txt">stops</a> of different players. Only available when there are a least two players.<br>
diff --git simutrans/text/en/station.txt simutrans/text/en/station.txt
index c062b330d..eb31c67a4 100644
--- simutrans/text/en/station.txt
+++ simutrans/text/en/station.txt
@@ -57,10 +57,10 @@ Information shown for items includes quantity, type, final destination and first
 Option-button (changes name with selection) sorts of items within groups:<br>
  - <em>destination:</em> sorts items, alphanumerically within ASCII-code order (capital letters before lower case letters), by assigned name of final destination Stop.<br>
  - <em>via (detail):</em> sorts items, alphanumerically within ASCII-code order (capital letters before lower case letters), by assigned name of first transfer Stop.<br>
- - <em>via (amount):</em> ?sorts items by quantity headed to first transfer Stop.<br>
+ - <em>via (amount):</em> sorts items by quantity headed to first transfer Stop.<br>
  - <em>amount:</em> sorts items by quantity in descending order.<br>
 {Tips: goods-colour-bars above a Stop in game-view (use [!] to toggle) indicate quantity of items that wait for transport and are the same colour as <a href="goods_filter.txt">colour-squares</a> in Goods List.}
- - <em>via (player):</em> ?sorts items by quantity headed to transfer Stops of different player.<br>
+ - <em>via (player):</em> sorts items by quantity headed to transfer Stops of different player. Only available when there are a least two players.<br>
 </p>
 <p>
 <em>Chart:</em> click option-button to toggle graph (button is indentented when graph is visible) in <strong>Stop Information</strong>.<br>
diff --git src/simutrans/gui/convoi_info.cc src/simutrans/gui/convoi_info.cc
index 2036691f6..3a0c13d4b 100644
--- src/simutrans/gui/convoi_info.cc
+++ src/simutrans/gui/convoi_info.cc
@@ -547,6 +547,25 @@ bool convoi_info_t::action_triggered( gui_action_creator_t *comp, value_t v)
 	// sort by what
 	else if(  comp == &sort_button  ) {
 		// sort by what
+		bool has_many_players = false;
+		for(  int i=2;  i<15;  i++  ) {
+			if(  welt->get_player(i) != NULL  ) {
+				has_many_players = true;
+				break;
+			}
+		}
+		if(  has_many_players  ) {
+			// Only allow "via (player)" sorting order here
+			env_t::default_sortmode = (sort_mode_t)((int)(cnv->get_sortby())+1)%(int)SORT_MODES;
+		}
+		else if(  env_t::default_sortmode>=((int)SORT_MODES-1)  ) {
+			// Don't skip first sort mode if "via (player)" is not longer available
+			env_t::default_sortmode = 0;
+		}
+		else {
+			env_t::default_sortmode = ((int)(cnv->get_sortby())+1)%((int)SORT_MODES-1);
+		}
+
 		env_t::default_sortmode = (sort_mode_t)((int)(cnv->get_sortby()+1)%(int)SORT_MODES);
 		sort_button.set_text(sort_text[env_t::default_sortmode]);
 		cnv->set_sortby( env_t::default_sortmode );
diff --git src/simutrans/gui/halt_info.cc src/simutrans/gui/halt_info.cc
index 59c9c560a..7fc809af9 100644
--- src/simutrans/gui/halt_info.cc
+++ src/simutrans/gui/halt_info.cc
@@ -967,7 +967,24 @@ void gui_departure_board_t::insert_image(convoihandle_t cnv)
 bool halt_info_t::action_triggered( gui_action_creator_t *comp,value_t /* */)
 {
 	if (comp == &sort_button) {
-		env_t::default_sortmode = ((int)(halt->get_sortby())+1)%5;
+		bool has_many_players = false;
+		for(  int i=2;  i<15;  i++  ) {
+			if(  welt->get_player(i) != NULL  ) {
+				has_many_players = true;
+				break;
+			}
+		}
+		if(  has_many_players  ) {
+			// Only allow "via (player)" sorting order here
+			env_t::default_sortmode = ((int)(halt->get_sortby())+1)%5;
+		}
+		else if(  env_t::default_sortmode>=4  ) {
+			// Don't skip first sort mode if "via (player)" is not longer available
+			env_t::default_sortmode = 0;
+		}
+		else {
+			env_t::default_sortmode = ((int)(halt->get_sortby())+1)%4;
+		}
 		halt->set_sortby((freight_list_sorter_t::sort_mode_t) env_t::default_sortmode);
 		sort_button.set_text(sort_text[env_t::default_sortmode]);
 	}
