diff --git src/simutrans/gui/halt_info.cc src/simutrans/gui/halt_info.cc
index 4d3715e2d..f3d400580 100644
--- src/simutrans/gui/halt_info.cc
+++ src/simutrans/gui/halt_info.cc
@@ -578,7 +578,7 @@ void gui_halt_detail_t::update_connections( halthandle_t halt )
 	halt_permissions = halt->get_permissions();
 	for (uint16 i = 0; i < MAX_PLAYER_COUNT; i++) {
 		if (player_t *pl = world()->get_player(i)) {
-			if (i == 1 && !pl->get_finance()->has_convoi()) {
+			if (pl->is_public_service() && !pl->get_finance()->has_convoi()) {
 				// only show public service when it owns convois ...
 				continue;
 			}
@@ -593,7 +593,7 @@ void gui_halt_detail_t::update_connections( halthandle_t halt )
 		}
 		connected_players[i].pressed = halt_permissions & (1<<i);
 	}
-	if (how_many > 0) {
+	if (how_many > 0 && !halt->get_owner()->is_public_service()) {
 		take_component(t, 2);
 	}
 
diff --git src/simutrans/simhalt.cc src/simutrans/simhalt.cc
index faa0a86e7..7fe86a6f0 100644
--- src/simutrans/simhalt.cc
+++ src/simutrans/simhalt.cc
@@ -3312,9 +3312,11 @@ void haltestelle_t::display_status(sint16 xpos, sint16 ypos)
 {
 	// Do we need to display permissions?
 	uint16 player_count = 0;
-	for(  uint16 i = 0;  i <	PLAYER_UNOWNED;  i++  ) {
-		if(  (permissions&(1<<i))  &&  welt->get_player(i)  &&  !welt->get_player(i)->is_public_service()  ) {
-			player_count += 1;
+	if(  !halt->get_owner()->is_public_service()  ) {
+		for(  uint16 i = 0;  i < PLAYER_UNOWNED;  i++  ) {
+			if(  (permissions&(1<<i))  &&  welt->get_player(i)  &&  !welt->get_player(i)->is_public_service()  ) {
+				player_count += 1;
+			}
 		}
 	}
  
@@ -3342,9 +3344,8 @@ void haltestelle_t::display_status(sint16 xpos, sint16 ypos)
 		players_dirty = true;
 	}
 	if(  player_count > 1  ) {
-		uint8 old_count = 0;
 		sint16 x = xpos - (player_count * 17 - gfx->get_tile_raster_width()) / 2;
-		for(  uint16 i = 0;  i <PLAYER_UNOWNED;  i++  ) {
+		for(  uint16 i = 0;  i < PLAYER_UNOWNED;  i++  ) {
 			if(  (permissions&(1<<i))  &&  welt->get_player(i)  &&  !welt->get_player(i)->is_public_service()  ) {
 				const PIXVAL color = gfx->palette_lookup(welt->get_player(i)->get_player_color1()+4);
 				gfx->draw_rect_clipped( x, ypos, 16, D_WAITINGBAR_WIDTH, color, false CLIP_NUM_DEFAULT);
