Program: 22493
Project: 22493
Buggy source:
@Override public void updateEntity(){
  UtilSteamTransport.generalDistributionEvent(worldObj,xCoord,yCoord,zCoord,ForgeDirection.values());
  UtilSteamTransport.generalPressureEvent(worldObj,xCoord,yCoord,zCoord,this.getPressure(),this.getCapacity());
  ForgeDirection inputDir=this.getOutputDirection().getOpposite();
  int x=this.xCoord + inputDir.offsetX;
  int y=this.yCoord + inputDir.offsetY;
  int z=this.zCoord + inputDir.offsetZ;
  if (this.steam >= 10 && myTank.getFluidAmount() == 0 && this.worldObj.getBlockMetadata(x,y,z) == 0 && FluidRegistry.lookupFluidForBlock(this.worldObj.getBlock(x,y,z)) != null) {
    Fluid fluid=FluidRegistry.lookupFluidForBlock(this.worldObj.getBlock(x,y,z));
    if (myTank.getFluidAmount() < 1000) {
      this.myTank.fill(new FluidStack(fluid,1000),true);
      this.worldObj.setBlockToAir(x,y,z);
      progress=0;
      steam-=10;
    }
  }
  if (myTank.getFluidAmount() > 0 && myTank.getFluid() != null && progress < 100) {
    progress++;
  }
  ForgeDirection outputDir=this.getOutputDirection();
  int x2=this.xCoord + outputDir.offsetX;
  int y2=this.yCoord + outputDir.offsetY;
  int z2=this.zCoord + outputDir.offsetZ;
  if (myTank.getFluidAmount() > 0 && progress == 100 && this.worldObj.getTileEntity(x2,y2,z2) != null && this.worldObj.getTileEntity(x2,y2,z2) instanceof IFluidHandler) {
    IFluidHandler fluidHandler=(IFluidHandler)this.worldObj.getTileEntity(x2,y2,z2);
    if (fluidHandler.canFill(inputDir,myTank.getFluid().getFluid())) {
      int amnt=fluidHandler.fill(inputDir,this.myTank.getFluid(),true);
      this.myTank.drain(amnt,true);
      progress=0;
    }
  }
  this.worldObj.markBlockForUpdate(xCoord,yCoord,zCoord);
}

Fixed version (ground truth):
@Override public void updateEntity(){
  UtilSteamTransport.generalDistributionEvent(worldObj,xCoord,yCoord,zCoord,ForgeDirection.values());
  UtilSteamTransport.generalPressureEvent(worldObj,xCoord,yCoord,zCoord,this.getPressure(),this.getCapacity());
  ForgeDirection inputDir=this.getOutputDirection().getOpposite();
  int x=this.xCoord + inputDir.offsetX;
  int y=this.yCoord + inputDir.offsetY;
  int z=this.zCoord + inputDir.offsetZ;
  if (this.steam >= 10 && myTank.getFluidAmount() == 0 && this.worldObj.getBlockMetadata(x,y,z) == 0 && FluidRegistry.lookupFluidForBlock(this.worldObj.getBlock(x,y,z)) != null) {
    Fluid fluid=FluidRegistry.lookupFluidForBlock(this.worldObj.getBlock(x,y,z));
    if (myTank.getFluidAmount() < 1000) {
      this.myTank.fill(new FluidStack(fluid,1000),true);
      this.worldObj.setBlockToAir(x,y,z);
      progress=0;
      steam-=10;
    }
  }
  if (myTank.getFluidAmount() > 0 && myTank.getFluid() != null && progress < 100) {
    progress++;
  }
  ForgeDirection outputDir=this.getOutputDirection();
  int x2=this.xCoord + outputDir.offsetX;
  int y2=this.yCoord + outputDir.offsetY;
  int z2=this.zCoord + outputDir.offsetZ;
  if (myTank.getFluidAmount() > 0 && progress == 100 && this.worldObj.getTileEntity(x2,y2,z2) != null && this.worldObj.getTileEntity(x2,y2,z2) instanceof IFluidHandler) {
    IFluidHandler fluidHandler=(IFluidHandler)this.worldObj.getTileEntity(x2,y2,z2);
    if (fluidHandler.canFill(inputDir,myTank.getFluid().getFluid())) {
      int amnt=fluidHandler.fill(inputDir,this.myTank.getFluid(),true);
      if (amnt > 0) {
        this.myTank.drain(1000,true);
        progress=0;
      }
    }
  }
  this.worldObj.markBlockForUpdate(xCoord,yCoord,zCoord);
}