Program: 22464
Project: 22464
Buggy source:
public void updateEntity(){
  super.superUpdateOnly();
  if (this.shouldExplode) {
    worldObj.createExplosion(null,xCoord + 0.5F,yCoord + 0.5F,zCoord + 0.5F,4.0F,true);
    return;
  }
  if (waitOneTick)   waitOneTick=false;
 else {
    if (!worldObj.isRemote && worldObj.getBlockMetadata(xCoord,yCoord,zCoord) == 1) {
      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) {
        maxThisTick=Math.min(furnaceBurnTime,10);
        this.furnaceBurnTime-=maxThisTick;
      }
      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.heat > 0) {
          this.heat-=Math.min(this.heat,10);
        }
        if (this.isBurning() && this.heat < 1600) {
          this.heat++;
        }
        if (this.isBurning() && this.canSmelt()) {
          ++this.furnaceCookTime;
          if (this.furnaceCookTime > 0) {
            int i=0;
            int maxSteamThisTick=(int)(((float)maxThisTick) * 0.7F + (maxThisTick * 0.3F * ((float)this.heat / 1600.0F)));
            while (i < maxSteamThisTick && this.isBurning() && this.canSmelt()) {
              this.insertSteam(10);
              this.myTank.drain(2,true);
              i++;
            }
            this.furnaceCookTime=0;
            flag1=true;
          }
        }
 else {
          this.furnaceCookTime=0;
        }
        if (flag != this.furnaceBurnTime > 0) {
          flag1=true;
        }
      }
      if (this.isBurning() != this.wasBurning) {
        this.wasBurning=this.isBurning();
        this.burning=this.isBurning();
        this.worldObj.markBlockForUpdate(xCoord,yCoord,zCoord);
      }
    }
  }
  if (!this.worldObj.isRemote) {
  }
}

Fixed version (ground truth):
public void updateEntity(){
  super.superUpdateOnly();
  if (this.shouldExplode) {
    this.getNetwork().split(this,true);
    worldObj.createExplosion(null,xCoord + 0.5F,yCoord + 0.5F,zCoord + 0.5F,4.0F,true);
    return;
  }
  if (waitOneTick)   waitOneTick=false;
 else {
    if (!worldObj.isRemote && worldObj.getBlockMetadata(xCoord,yCoord,zCoord) == 1) {
      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) {
        maxThisTick=Math.min(furnaceBurnTime,10);
        this.furnaceBurnTime-=maxThisTick;
      }
      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.heat > 0) {
          this.heat-=Math.min(this.heat,10);
        }
        if (this.isBurning() && this.heat < 1600) {
          this.heat++;
        }
        if (this.isBurning() && this.canSmelt()) {
          ++this.furnaceCookTime;
          if (this.furnaceCookTime > 0) {
            int i=0;
            int maxSteamThisTick=(int)(((float)maxThisTick) * 0.7F + (maxThisTick * 0.3F * ((float)this.heat / 1600.0F)));
            while (i < maxSteamThisTick && this.isBurning() && this.canSmelt()) {
              this.insertSteam(10);
              this.myTank.drain(2,true);
              i++;
            }
            this.furnaceCookTime=0;
            flag1=true;
          }
        }
 else {
          this.furnaceCookTime=0;
        }
        if (flag != this.furnaceBurnTime > 0) {
          flag1=true;
        }
      }
      if (this.isBurning() != this.wasBurning) {
        this.wasBurning=this.isBurning();
        this.burning=this.isBurning();
        this.worldObj.markBlockForUpdate(xCoord,yCoord,zCoord);
      }
    }
  }
  if (!this.worldObj.isRemote) {
  }
}