             homeLabelFrame = CGRectIntegral(CGRectMake(leadingBuffer, 0.0, expectedLabelSize.width, expectedLabelSize.height))
             awayOffset = bounds.size.width - (expectedLabelSize.width + leadingBuffer + trailingBuffer)
             
-            // Recompute the animation duration
-            animationDuration = {
-                if let rate = self.scrollRate {
-                    return fabs(awayOffset / rate)
-                } else {
-                    return self.scrollDuration ?? 7.0
-                }
-                }()
-            
             // Set frame and text
             sublabel.frame = homeLabelFrame
             

            
        // Default case not required
        }
        
        // Configure gradient for current condition
        applyGradientMask(fadeLength, animated: !self.labelize)

        return (sublabel.layer.speed == 0.0)
    }
    
    public enum speedLimit {
        case Rate(CGFloat)
        case Duration(CGFloat)
    }
    
    public var speed: speedLimit = .Duration(7.0) {
        didSet {
            switch (speed, oldValue) {
            case (.Rate(let a), .Rate(let b)) where a == b:
                return
            case (.Duration(let a), .Duration(let b)) where a == b:
                return
            default:
                updateAndScroll()
            }
        }
    }
    
    public var scrollDuration: CGFloat? {
        get {
            switch speed {
            case .Duration(let duration): return duration
            case .Rate(_): return nil
            }
        }
        set {
            if let duration = newValue {
                speed = .Duration(duration)
            }
        }
    }
    
    public var scrollRate: CGFloat? {
        get {
            switch speed {
            case .Duration(_): return nil
            case .Rate(let rate): return rate
            }
        }
        set {
            if let rate = newValue {
                speed = .Rate(rate)
            }
        }
    }
