anchor.diff:      aboveBarPath.lineTo(x, y);
   
       /// Line To Top Left
  -    x = getPixelX(bar[0].x, chartViewSize);
  +    x = getPixelX(barSpots[0].x, chartViewSize);
       if (!fillCompletely && barData.aboveBarData.applyCutOffY) {
         y = getPixelY(barData.aboveBarData.cutOffY, chartViewSize);
       } else {
  
positive.code:   /// and we use isCurved to find out how we should generate it,
    /// If you want to concatenate paths together for creating an area between
    /// multiple bars for example, you can pass the appendToPath
    Path _generateBarPath(Size viewSize, LineChartBarData barData, List<FlSpot> bar,
        {Path appendToPath}) {
      viewSize = getChartUsableDrawSize(viewSize);
      final Path path = appendToPath ?? Path();
      final int size = bar.length;
  
      var temp = const Offset(0.0, 0.0);
  
      final double x = getPixelX(bar[0].x, viewSize);
      final double y = getPixelY(bar[0].y, viewSize);
      if (appendToPath == null) {
        path.moveTo(x, y);
      } else {
  
negative.code:     for (int i = 1; i < size; i++) {
        /// CurrentSpot
        final current = Offset(
          getPixelX(barSpots[i].x, viewSize),
          getPixelY(barSpots[i].y, viewSize),
        );
  
        /// previous spot
        final previous = Offset(
          getPixelX(barSpots[i - 1].x, viewSize),
          getPixelY(barSpots[i - 1].y, viewSize),
        );
  
        /// next point
        final next = Offset(
          getPixelX(barSpots[i + 1 < size ? i + 1 : i].x, viewSize),
          getPixelY(barSpots[i + 1 < size ? i + 1 : i].y, viewSize),
        );
  
        final controlPoint1 = previous + temp;
  