private int internalDoSmoothZoom(int currentZoomLevel, int targetZoomLevel) {
        
        int newZoom = currentZoomLevel;
        final int zoomDiff = Math.abs(currentZoomLevel-targetZoomLevel);
        
        if (currentZoomLevel > targetZoomLevel) {
            // Zoom IN to targetZoomLevel
            if (zoomDiff > 15)
                newZoom -= 5;
            else if (zoomDiff > 9)
                newZoom -= 3;
            else if (zoomDiff > 5)
                newZoom -= 2;
            else
                newZoom --;
            
        } else {            
            // Zoom OUT to targetZoomLevel
            if (zoomDiff > 15)
                newZoom += 5;
            else if (zoomDiff > 9)
                newZoom += 3;
            else if (zoomDiff > 5)
                newZoom += 2;
            else
                newZoom ++;
        }
        
        return newZoom;
    }