     var color: DynamicColor = .black
 
     for (index, position) in positions.enumerated() {
-      if clippedScale <= position {
-        guard clippedScale != 0 && clippedScale != 1 else {
-          return self[index]
-        }
+      guard clippedScale <= position else {
+        continue
+      }
 
-        let previousPosition = positions[index - 1]
-        let weight           = (clippedScale - previousPosition) / (position - previousPosition)
+      guard clippedScale != 0 && clippedScale != 1 else {
+        return self[index]
+      }
 
-        color = self[index - 1].mixed(color: self[index], weight: weight)
-        
-        break
-      }
+      let previousPosition = positions[index - 1]
+      let weight           = (clippedScale - previousPosition) / (position - previousPosition)
+
+      color = self[index - 1].mixed(color: self[index], weight: weight)
+
+      break
     }
     
     return color

      return (0 ..< amount).map { _ in self[0] }
    }

    let increment              = 1 / CGFloat(amount - 1)
    var colors: [DynamicColor] = []

    for i in 0 ..< amount {
      colors.append(colorAt(scale: CGFloat(i) * increment))
    }

    return colors
  }

  /**

   For example, given this array `[red, green, blue]` and a scale of `0.25` you will get a kaki color.

   - parameter scale: A float value between 0.0 and 1.0.
   - returns: A DynamicColor object corresponding to the correct color at the given scale.
   */
  public func colorAt(scale: CGFloat) -> DynamicColor {
    guard self.count > 0 else {
