Program: 22492
Project: 22492
Buggy source:
@Override public void updateEntity(){
  UtilSteamTransport.generalDistributionEvent(worldObj,xCoord,yCoord,zCoord,new ForgeDirection[]{ForgeDirection.UP});
  UtilSteamTransport.generalPressureEvent(worldObj,xCoord,yCoord,zCoord,this.getPressure(),this.getCapacity());
  if (this.getStackInSlot(1) != null) {
    if (this.getStackInSlot(1).getItem() == Items.water_bucket || (this.getStackInSlot(1).getItem() instanceof IFluidContainerItem && ((IFluidContainerItem)this.getStackInSlot(1).getItem()).getFluid(this.getStackInSlot(1)) != null && ((IFluidContainerItem)this.getStackInSlot(1).getItem()).getFluid(this.getStackInSlot(1)).getFluid() == FluidRegistry.WATER)) {
      if (canDrainItem(this.getStackInSlot(1))) {
        if (this.getStackInSlot(1).getItem() == Items.water_bucket) {
          this.setInventorySlotContents(1,new ItemStack(Items.bucket));
          this.myTank.fill(new FluidStack(FluidRegistry.WATER,1000),true);
        }
        if (this.getStackInSlot(1).getItem() instanceof IFluidContainerItem) {
          int maxDrain=this.getTankInfo(ForgeDirection.UP)[0].capacity - this.getTankInfo(ForgeDirection.UP)[0].fluid.amount;
          this.myTank.fill(new FluidStack(FluidRegistry.WATER,((IFluidContainerItem)this.getStackInSlot(1).getItem()).drain(this.getStackInSlot(1),maxDrain,true).amount),true);
        }
      }
    }
  }
  boolean flag=this.furnaceBurnTime > 0;
  boolean flag1=false;
  if (this.furnaceBurnTime > 0) {
    --this.furnaceBurnTime;
  }
  if (!this.worldObj.isRemote) {
    if (this.furnaceBurnTime == 0 && this.canSmelt()) {
      this.currentItemBurnTime=this.furnaceBurnTime=getItemBurnTime(this.furnaceItemStacks[0]);
      if (this.furnaceBurnTime > 0) {
        flag1=true;
        if (this.furnaceItemStacks[0] != null) {
          --this.furnaceItemStacks[0].stackSize;
          if (this.furnaceItemStacks[0].stackSize == 0) {
            this.furnaceItemStacks[0]=furnaceItemStacks[0].getItem().getContainerItem(furnaceItemStacks[0]);
          }
        }
      }
    }
    if (this.isBurning() && this.canSmelt()) {
      ++this.furnaceCookTime;
      if (this.furnaceCookTime > 0) {
        this.furnaceCookTime=0;
        this.steam+=1;
        this.myTank.drain(2,true);
        flag1=true;
      }
    }
 else {
      this.furnaceCookTime=0;
    }
    if (flag != this.furnaceBurnTime > 0) {
      flag1=true;
      BlockBoiler.updateFurnaceBlockState(this.furnaceBurnTime > 0,this.worldObj,this.xCoord,this.yCoord,this.zCoord);
    }
  }
  if (!this.worldObj.isRemote) {
  }
  this.worldObj.markBlockForUpdate(xCoord,yCoord,zCoord);
}

Fixed version (ground truth):
@Override public void updateEntity(){
  UtilSteamTransport.generalDistributionEvent(worldObj,xCoord,yCoord,zCoord,new ForgeDirection[]{ForgeDirection.UP});
  UtilSteamTransport.generalPressureEvent(worldObj,xCoord,yCoord,zCoord,this.getPressure(),this.getCapacity());
  if (this.getStackInSlot(1) != null) {
    if (this.getStackInSlot(1).getItem() == Items.water_bucket || (this.getStackInSlot(1).getItem() instanceof IFluidContainerItem && ((IFluidContainerItem)this.getStackInSlot(1).getItem()).getFluid(this.getStackInSlot(1)) != null && ((IFluidContainerItem)this.getStackInSlot(1).getItem()).getFluid(this.getStackInSlot(1)).getFluid() == FluidRegistry.WATER)) {
      if (canDrainItem(this.getStackInSlot(1))) {
        if (this.getStackInSlot(1).getItem() == Items.water_bucket) {
          this.setInventorySlotContents(1,new ItemStack(Items.bucket));
          this.myTank.fill(new FluidStack(FluidRegistry.WATER,1000),true);
        }
        if (this.getStackInSlot(1).getItem() instanceof IFluidContainerItem) {
          int maxDrain=this.getTankInfo(ForgeDirection.UP)[0].capacity - this.getTankInfo(ForgeDirection.UP)[0].fluid.amount;
          this.myTank.fill(new FluidStack(FluidRegistry.WATER,((IFluidContainerItem)this.getStackInSlot(1).getItem()).drain(this.getStackInSlot(1),maxDrain,true).amount),true);
        }
      }
    }
  }
  boolean flag=this.furnaceBurnTime > 0;
  boolean flag1=false;
  int maxThisTick=10;
  if (this.furnaceBurnTime > 0) {
    this.furnaceBurnTime-=1;
  }
  if (!this.worldObj.isRemote) {
    if (this.furnaceBurnTime == 0 && this.canSmelt()) {
      this.currentItemBurnTime=this.furnaceBurnTime=getItemBurnTime(this.furnaceItemStacks[0]);
      if (this.furnaceBurnTime > 0) {
        flag1=true;
        if (this.furnaceItemStacks[0] != null) {
          --this.furnaceItemStacks[0].stackSize;
          if (this.furnaceItemStacks[0].stackSize == 0) {
            this.furnaceItemStacks[0]=furnaceItemStacks[0].getItem().getContainerItem(furnaceItemStacks[0]);
          }
        }
      }
    }
    if (this.isBurning() && this.canSmelt()) {
      ++this.furnaceCookTime;
      if (this.furnaceCookTime > 0) {
        this.steam+=1;
        this.myTank.drain(2,true);
        this.furnaceCookTime=0;
        flag1=true;
      }
    }
 else {
      this.furnaceCookTime=0;
    }
    if (flag != this.furnaceBurnTime > 0) {
      flag1=true;
      BlockBoiler.updateFurnaceBlockState(this.furnaceBurnTime > 0,this.worldObj,this.xCoord,this.yCoord,this.zCoord);
    }
  }
  if (!this.worldObj.isRemote) {
  }
  this.worldObj.markBlockForUpdate(xCoord,yCoord,zCoord);
}