         let roundDecimals: Double = 1000000000000
         let zoomedMultiplier = multiplier / pow(2, floor(round(log2(axis.zoomFactor) * roundDecimals) / roundDecimals))
         
-        let modelStart = calculateModelStart(axis, multiplier: zoomedMultiplier)
+        return generate(axis, multiplier: zoomedMultiplier)
+    }
+    
+    private func generate(axis: ChartAxis, multiplier: Double) -> [Double] {
+        
+        let modelStart = calculateModelStart(axis, multiplier: multiplier)
         
         var values = [Double]()
         var scalar = modelStart

    
    var multiplier: Double
    
    public init(_ multiplier: Double) {
        self.multiplier = multiplier
    }

            if ((scalar =~ axis.firstInit && axis.zoomFactor =~ 1) || scalar >=~ axis.firstModelValueInBounds) && ((scalar =~ axis.lastInit && axis.zoomFactor =~ 1) || scalar <=~ axis.lastModelValueInBounds) {
                values.append(scalar)
            }
            let newScalar = incrementScalar(scalar, multiplier: multiplier)
            
            if newScalar == scalar {
                return lastValidMultiplier.map{lastMultiplier in
                    generate(axis, multiplier: lastMultiplier).filter{$0 >= axis.firstModelValueInBounds && $0 <= axis.lastModelValueInBounds}
                } ?? []
                
            } else {
                lastValidMultiplier = multiplier
            }
            
            scalar = newScalar
        }
