Program: 67195
Project: 67195
Buggy source:
/** 
 * @param idr
 * @param bo
 * @throws ChartException
 */
private final void render(IDeviceRenderer idr,Bounds bo,RadarSeries se,SeriesDefinition sd) throws ChartException {
  List<Series> rts=sd.getRunTimeSeries();
  int iThisSeriesIndex=rts.indexOf(se);
  if (iThisSeriesIndex == -1)   iThisSeriesIndex=getSeriesIndex();
  int totalSeriesCnt=getSeriesCount();
  int currSeriesIdx=getSeriesIndex();
  final EList<Fill> elPalette=sd.getSeriesPalette().getEntries();
  final AbstractScriptHandler<?> sh=getRunTimeContext().getScriptHandler();
  dc=getDeferredCache();
  Bounds boCA=goFactory.copyOf(bo);
  double dh=boCA.getHeight() - (boCA.getHeight() * percentReduce);
  double dl=boCA.getLeft() + (boCA.getWidth() * percentReduce) / 2;
  double dt=boCA.getTop() + (boCA.getHeight() * percentReduce) / 2;
  double dw=boCA.getWidth() - (boCA.getWidth() * percentReduce);
  double centrePointX=Math.round(dl + dw / 2);
  double centrePointY=Math.round(dt + dh / 2);
  double mag=dh / 2;
  Location cntpt=LocationImpl.create(centrePointX,centrePointY);
  if (currSeriesIdx == 1) {
    if (BULLSEYE_SUBTYPE_LITERAL.equals(getModel().getSubType())) {
      renderOvalBackgrounds(idr,cntpt,se,mag);
    }
  }
  PolarCoordinate pc=new PolarCoordinate(cntpt,dpha.length,getSeriesCount() - 1,getSeriesIndex() - 1);
  final boolean bPaletteByCategory=isPaletteByCategory();
  Fill fPaletteEntry=null;
  if (!bPaletteByCategory) {
    fPaletteEntry=FillUtil.getPaletteFill(elPalette,iThisSeriesIndex);
    updateTranslucency(fPaletteEntry,se);
  }
  Location loAxis=LocationImpl.create(centrePointX,centrePointY);
  List<Location> loList=new LinkedList<Location>();
  for (int index=0; index < dpha.length; index++) {
    DataPointHints dph=dpha[index];
    if (isNaN(dph.getOrthogonalValue())) {
      continue;
    }
    double currval=((Double)dph.getOrthogonalValue()).doubleValue();
    if (currval < 0) {
      continue;
    }
    pc.computeLocation(loAxis,index,mag);
    Location lo=pc.createLocation(index,mag * (currval / getAxisMax()));
    loList.add(lo);
    if (bPaletteByCategory) {
      fPaletteEntry=FillUtil.getPaletteFill(elPalette,index);
      updateTranslucency(fPaletteEntry,se);
    }
    LineAttributes llia=se.getLineAttributes();
    if (se.isPaletteLineColor() && index == 0) {
      llia.setColor(goFactory.copyOf(FillUtil.getColor(fPaletteEntry)));
    }
    Marker m=se.getMarker();
    if (m != null) {
      ScriptHandler.callFunction(sh,ScriptHandler.BEFORE_DRAW_DATA_POINT,dph,fPaletteEntry,getRunTimeContext().getScriptContext());
      getRunTimeContext().notifyStructureChange(IStructureDefinitionListener.BEFORE_DRAW_DATA_POINT,dph);
      renderMarker(se,idr,m,lo,llia,fPaletteEntry,dph,m.getSize(),true,false);
      ScriptHandler.callFunction(sh,ScriptHandler.AFTER_DRAW_DATA_POINT,dph,fPaletteEntry,getRunTimeContext().getScriptContext());
      getRunTimeContext().notifyStructureChange(IStructureDefinitionListener.AFTER_DRAW_DATA_POINT,dph);
    }
    drawSeriesLabel(idr,pc,dph,loAxis);
  }
  renderPolys(idr,loList.toArray(new Location[loList.size()]),se,sd);
  if (currSeriesIdx == (totalSeriesCnt - 1)) {
    if (se.getWebLineAttributes() != null && se.getWebLineAttributes().isVisible()) {
      renderAxes(idr,pc,mag);
    }
    RadarSeries rsd=getFirstSeries();
    if (rsd.isShowWebLabels()) {
      Location loLabel=LocationImpl.create(0,0);
      for (int sc=0; sc <= scaleCount; sc++) {
        final TextRenderEvent stre=((EventObjectCache)idr).getEventObject(StructureSource.createSeries(se),TextRenderEvent.class);
        Label la=goFactory.copyOf(rsd.getLabel());
        la.setVisible(true);
        stre.setTextPosition(TextRenderEvent.RIGHT);
        double lblperc=((double)sc / scaleCount) * 100;
        DecimalFormat decform=new DecimalFormat("String_Node_Str");
        lblperc=Double.valueOf(decform.format(lblperc));
        la.getCaption().setValue(lblperc + "String_Node_Str");
        stre.setLabel(la);
        stre.setAction(TextRenderEvent.RENDER_TEXT_AT_LOCATION);
        double ycord=mag * sc / scaleCount;
        ycord=Math.round(centrePointY - ycord);
        double xcord=Math.round(centrePointX - 10);
        loLabel.set(xcord,ycord);
        stre.setLocation(loLabel);
        dc.addLabel(stre);
      }
    }
  }
}

Fixed version (ground truth):
/** 
 * @param idr
 * @param bo
 * @throws ChartException
 */
private final void render(IDeviceRenderer idr,Bounds bo,RadarSeries se,SeriesDefinition sd) throws ChartException {
  List<Series> rts=sd.getRunTimeSeries();
  int iThisSeriesIndex=rts.indexOf(se);
  if (iThisSeriesIndex == -1)   iThisSeriesIndex=getSeriesIndex();
  int totalSeriesCnt=getSeriesCount();
  int currSeriesIdx=getSeriesIndex();
  final EList<Fill> elPalette=sd.getSeriesPalette().getEntries();
  final AbstractScriptHandler<?> sh=getRunTimeContext().getScriptHandler();
  dc=getDeferredCache();
  Bounds boCA=goFactory.copyOf(bo);
  double dh=boCA.getHeight() - (boCA.getHeight() * percentReduce);
  double dl=boCA.getLeft() + (boCA.getWidth() * percentReduce) / 2;
  double dt=boCA.getTop() + (boCA.getHeight() * percentReduce) / 2;
  double dw=boCA.getWidth() - (boCA.getWidth() * percentReduce);
  double centrePointX=Math.round(dl + dw / 2);
  double centrePointY=Math.round(dt + dh / 2);
  double mag=dh / 2;
  Location cntpt=LocationImpl.create(centrePointX,centrePointY);
  if (currSeriesIdx == 1) {
    if (BULLSEYE_SUBTYPE_LITERAL.equals(getModel().getSubType())) {
      renderOvalBackgrounds(idr,cntpt,se,mag);
    }
  }
  PolarCoordinate pc=new PolarCoordinate(cntpt,dpha.length,getSeriesCount() - 1,getSeriesIndex() - 1);
  final boolean bPaletteByCategory=isPaletteByCategory();
  Fill fPaletteEntry=null;
  if (!bPaletteByCategory) {
    fPaletteEntry=FillUtil.getPaletteFill(elPalette,iThisSeriesIndex);
    updateTranslucency(fPaletteEntry,se);
  }
  Location loAxis=LocationImpl.create(centrePointX,centrePointY);
  List<Location> loList=new LinkedList<Location>();
  for (int index=0; index < dpha.length; index++) {
    DataPointHints dph=dpha[index];
    if (isNaN(dph.getOrthogonalValue())) {
      continue;
    }
    double currval=((Number)dph.getOrthogonalValue()).doubleValue();
    if (currval < 0) {
      continue;
    }
    pc.computeLocation(loAxis,index,mag);
    Location lo=pc.createLocation(index,mag * (currval / getAxisMax()));
    loList.add(lo);
    if (bPaletteByCategory) {
      fPaletteEntry=FillUtil.getPaletteFill(elPalette,index);
      updateTranslucency(fPaletteEntry,se);
    }
    LineAttributes llia=se.getLineAttributes();
    if (se.isPaletteLineColor() && index == 0) {
      llia.setColor(goFactory.copyOf(FillUtil.getColor(fPaletteEntry)));
    }
    Marker m=se.getMarker();
    if (m != null) {
      ScriptHandler.callFunction(sh,ScriptHandler.BEFORE_DRAW_DATA_POINT,dph,fPaletteEntry,getRunTimeContext().getScriptContext());
      getRunTimeContext().notifyStructureChange(IStructureDefinitionListener.BEFORE_DRAW_DATA_POINT,dph);
      renderMarker(se,idr,m,lo,llia,fPaletteEntry,dph,m.getSize(),true,false);
      ScriptHandler.callFunction(sh,ScriptHandler.AFTER_DRAW_DATA_POINT,dph,fPaletteEntry,getRunTimeContext().getScriptContext());
      getRunTimeContext().notifyStructureChange(IStructureDefinitionListener.AFTER_DRAW_DATA_POINT,dph);
    }
    drawSeriesLabel(idr,pc,dph,loAxis);
  }
  renderPolys(idr,loList.toArray(new Location[loList.size()]),se,sd);
  if (currSeriesIdx == (totalSeriesCnt - 1)) {
    if (se.getWebLineAttributes() != null && se.getWebLineAttributes().isVisible()) {
      renderAxes(idr,pc,mag);
    }
    RadarSeries rsd=getFirstSeries();
    if (rsd.isShowWebLabels()) {
      Location loLabel=LocationImpl.create(0,0);
      for (int sc=0; sc <= scaleCount; sc++) {
        final TextRenderEvent stre=((EventObjectCache)idr).getEventObject(StructureSource.createSeries(se),TextRenderEvent.class);
        Label la=goFactory.copyOf(rsd.getLabel());
        la.setVisible(true);
        stre.setTextPosition(TextRenderEvent.RIGHT);
        double lblperc=((double)sc / scaleCount) * 100;
        DecimalFormat decform=new DecimalFormat("String_Node_Str");
        lblperc=Double.valueOf(decform.format(lblperc));
        la.getCaption().setValue(lblperc + "String_Node_Str");
        stre.setLabel(la);
        stre.setAction(TextRenderEvent.RENDER_TEXT_AT_LOCATION);
        double ycord=mag * sc / scaleCount;
        ycord=Math.round(centrePointY - ycord);
        double xcord=Math.round(centrePointX - 10);
        loLabel.set(xcord,ycord);
        stre.setLocation(loLabel);
        dc.addLabel(stre);
      }
    }
  }
}