         }
     }
     
-    var availableFrame: CGRect {
-        var correctedFrame = bounds
-        correctedFrame.origin.x = insets.left
-        correctedFrame.origin.y = insets.top
-        
-        correctedFrame.size.width -= insets.left + insets.right
-        correctedFrame.size.height -= insets.top + insets.bottom
-        
-        return correctedFrame
+    
+    // MARK: Private Properties
+    private var actualSpacing: CGFloat {
+        return (circleSpacing == SteppedProgressBarAutomaticDimension)
+            ? (availableFrame.width - 6.0 - (CGFloat(numberOfItems) * circleRadius)) / CGFloat(numberOfItems - 1)
+            : circleSpacing
     }
     
     private var languageFactor: CGFloat {

        let origin = CGPoint(x: center.x - size.width / 2.0, y: center.y - size.height / 2.0)
        rect.origin = origin
        string.draw(in: rect)
        
    }
}

        self.setNeedsDisplay()
    }
    
    // MARK: Draw Helper Methods
    
    @discardableResult
    func drawTabs(from begin: Int, to end: Int, color: UIColor, textColor: UIColor) -> (start: CGPoint, end: CGPoint) {
        let halfX = (CGFloat(numberOfItems - 1) * (actualSpacing + circleRadius) / 2.0)
