private int findBaseHeightForLogo(int target, int associationNameLength) {
        int base = 1;
        double height = getLogoHeight(associationNameLength, base);
        while (height < target) {
            base *= 2;
            height = getLogoHeight(associationNameLength, base);
            LOG.debug(String.format("%d --> %f", base, height));
        }
        int delta = base / 4;
        while (delta >= 1) {
            if (height > target) {
                base -= delta;
            }
            else if (height < target) {
                base += delta;
            }
            else {
                break;
            }
            delta /= 2;
            height = getLogoHeight(associationNameLength, base);
            LOG.debug(String.format("%d --> %f", base, height));
        }
        if (height > target) {
            double alternate = getLogoHeight(associationNameLength, base - 1);
            if (Math.abs(alternate - target) < Math.abs(height - target)) base--;
        }
        if (height < target) {
            double alternate = getLogoHeight(associationNameLength, base + 1);
            if (Math.abs(alternate - target) < Math.abs(height - target)) base++;
        }
        LOG.info("Best size: " + base);
        return base;
    }