anchor.diff:    /// if [fillCompletely] is true, the cutOffY will be ignored,
     /// and a completely filled path will return,
     Path _generateAboveBarPath(
  -      Size viewSize, LineChartBarData barData, Path barPath, List<FlSpot> bar,
  +      Size viewSize, LineChartBarData barData, Path barPath, List<FlSpot> barSpots,
         {bool fillCompletely = false}) {
       final aboveBarPath = Path.from(barPath);
   
       final chartViewSize = getChartUsableDrawSize(viewSize);
   
       /// Line To Top Right
  -    double x = getPixelX(bar[bar.length - 1].x, chartViewSize);
  +    double x = getPixelX(barSpots[barSpots.length - 1].x, chartViewSize);
       double y;
       if (!fillCompletely && barData.aboveBarData.applyCutOffY) {
         y = getPixelY(barData.aboveBarData.cutOffY, chartViewSize);
  
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:     belowBarPath.lineTo(x, y);
  
      /// Line To Bottom Left
      x = getPixelX(barSpots[0].x, chartViewSize);
      if (!fillCompletely && barData.belowBarData.applyCutOffY) {
        y = getPixelY(barData.belowBarData.cutOffY, chartViewSize);
      } else {
  