private String getScoreList(int position) throws Finished {
        StatisticsInterface stats = d.getUIData().getStats();
        int c = stats.getCurrentRoundNo();
        if (position + 1 > c) {
            throw new Finished();
        } else if (c > MAX_SCORE_LINES) {
            c = c - MAX_SCORE_LINES + position + 1;
        } else {
            c = position + 1;
        }

        StringBuilder sb = new StringBuilder(String.format("%3d", c));
        if (c >= stats.getStartingRoundNo()) {
            String points;
            String forecast;
            for (PlayerInterface player : d.getUIData().getPlayers()) {
                if (c == stats.getCurrentRoundNo()) {
                    points = "";
                } else {
                    points = String.valueOf(stats.getPointsIn(player, c));
                }
                try {
                    forecast = String.valueOf(stats.getForecastIn(player, c));
                } catch (IllegalArgumentException e) {
                    forecast = "-";
                }
                sb.append(String.format("| %-5s | %2s ", points, forecast));
            }
            sb.append('|');
            return sb.toString();
        } else {
            sb.append("  No data for this round available!");
            return sb.toString();
        }
    }