Program: 14460
Project: 14460
Buggy source:
@Override public void drawSeries(Canvas canvas,GraphViewDataInterface[] values,float graphwidth,float graphheight,float border,double minX,double minY,double diffX,double diffY,float horstart,GraphViewSeriesStyle style){
  float colwidth=graphwidth / values.length;
  paint.setStrokeWidth(style.thickness);
  paint.setColor(style.color);
  List<BarChartRect> barChartRects=new LinkedList<>();
  for (int i=0; i < values.length; i++) {
    float valY=(float)(values[i].getY() - minY);
    float ratY=(float)(valY / diffY);
    float y=graphheight * ratY;
    if (style.getValueDependentColor() != null) {
      paint.setColor(style.getValueDependentColor().get(values[i]));
    }
    float pad=style.padding;
    float left=(i * colwidth) + horstart;
    float top=(border - y) + graphheight;
    float right=left + colwidth;
    float bottom=graphheight + border - 1;
    if ((top - bottom) == 1) {
      if (mBarPositionToHighlight == i) {
        paint.setColor(getResources().getColor(R.color.stats_views_hover_color));
        paint.setAlpha(75);
        canvas.drawRect(left + pad,10f,right - pad,bottom,paint);
      }
 else {
        paint.setColor(style.color);
        paint.setAlpha(25);
        Shader shader=new LinearGradient(left + pad,bottom - 50,left + pad,bottom,Color.WHITE,Color.BLACK,Shader.TileMode.CLAMP);
        paint.setShader(shader);
        canvas.drawRect(left + pad,bottom - 50,right - pad,bottom,paint);
        paint.setShader(null);
      }
    }
 else {
      if (mBarPositionToHighlight == i) {
        paint.setColor(getResources().getColor(R.color.stats_views_hover_color));
      }
 else {
        paint.setColor(style.color);
      }
      canvas.drawRect(left + pad,top,right - pad,bottom,paint);
    }
    barChartRects.add(new BarChartRect(left + pad,top,right - pad,bottom));
  }
  mSeriesRectsDrawedOnScreen.add(barChartRects);
}

Fixed version (ground truth):
@Override public void drawSeries(Canvas canvas,GraphViewDataInterface[] values,float graphwidth,float graphheight,float border,double minX,double minY,double diffX,double diffY,float horstart,GraphViewSeriesStyle style){
  float colwidth=graphwidth / values.length;
  paint.setStrokeWidth(style.thickness);
  paint.setColor(style.color);
  List<BarChartRect> barChartRects=new LinkedList<>();
  for (int i=0; i < values.length; i++) {
    float valY=(float)(values[i].getY() - minY);
    float ratY=(float)(valY / diffY);
    float y=graphheight * ratY;
    if (style.getValueDependentColor() != null) {
      paint.setColor(style.getValueDependentColor().get(values[i]));
    }
    float pad=style.padding;
    float left=(i * colwidth) + horstart;
    float top=(border - y) + graphheight;
    float right=left + colwidth;
    float bottom=graphheight + border - 1;
    if (mBarPositionToHighlight == i) {
      paint.setColor(getResources().getColor(R.color.stats_views_hover_color));
      paint.setAlpha(50);
      canvas.drawRect(left,10f,right,bottom,paint);
    }
    if ((top - bottom) == 1) {
      if (mBarPositionToHighlight != i) {
        paint.setColor(style.color);
        paint.setAlpha(25);
        Shader shader=new LinearGradient(left + pad,bottom - 50,left + pad,bottom,Color.WHITE,Color.BLACK,Shader.TileMode.CLAMP);
        paint.setShader(shader);
        canvas.drawRect(left + pad,bottom - 50,right - pad,bottom,paint);
        paint.setShader(null);
      }
    }
 else {
      paint.setAlpha(255);
      if (mBarPositionToHighlight == i) {
        paint.setColor(getResources().getColor(R.color.stats_views_hover_color));
      }
 else {
        paint.setColor(style.color);
      }
      canvas.drawRect(left + pad,top,right - pad,bottom,paint);
    }
    barChartRects.add(new BarChartRect(left + pad,top,right - pad,bottom));
  }
  mSeriesRectsDrawedOnScreen.add(barChartRects);
}