             
             let maxSideText = maxTextSize()
             
-           // if ( maxSide < self.maxImageSize().max() ) {
-                if ( outerImageAlign ) {
-                    simpleRadius -= maxSideText.max()
-                } else if ( borderImageAlign ) {
-                    simpleRadius -= (maxSideText.max() * CGFloat(0.5))
-                }else{
+            if ( outerTextAlign > 0) {
+                alignExtraLength = max( alignExtraLength, maxSideText.max())
+            } else if ( borderTextAlign > 0) {
+                alignExtraLength =  max(maxSideText.max() * CGFloat(0.5), alignExtraLength)
+            }else{
                     
-                    // nothing
-                }
-        //    }
+                // nothing
+            }
             
             //println("\(self.layer.name) radius : \(simpleRadius) border:\(border) outer:\(outer) max  image side:\(maxSide) max text size \(maxSideText)")
             
-            return simpleRadius
+            return (simpleRadius - alignExtraLength)
         }
     }
 

        
        get {
            
            var simpleRadius = internalRadius > 0.0 ? internalRadius : (bounds.size.min() * 0.5)
            
            var outerImageAlign:Bool  = false
            var borderImageAlign:Bool = false
            var outerTextAlign:Bool  = false
            var borderTextAlign:Bool = false
            
            // Max angle
            

            
            for (index, step) in enumerate(dataSteps) {
                
                let curStep = (step as! OMStepData)
                
                // Image
                outerImageAlign  += (curStep.imageAlign == .AlignOuter) ? 1 : 0
                borderImageAlign += (curStep.imageAlign == .AlignBorder) ? 1 : 0
                
                // Text
                outerTextAlign  += (curStep.textAlign == .AlignOuter) ? 1 : 0
                borderTextAlign += (curStep.textAlign == .AlignBorder) ? 1 : 0
            }
        

            let maxSide = CGFloat(maxAngle) * simpleRadius
            
            if ( maxSide < self.maxImageSize().max() ) {
                if ( outerImageAlign > 0) {
                    alignExtraLength  = maxSide
                } else if ( borderImageAlign > 0) {
                    alignExtraLength = maxSide * 0.5
                }else{
                    
                    // nothing
