anchor.diff:    F := TIniFile.Create(GetPath() + 'morgue.thi');
     try
       S := IntToStr(Index);
  -    F.WriteInteger(S, 'X', AX);
  -    F.WriteInteger(S, 'Y', AY);
  -    F.WriteInteger(S, 'Z', AZ);
  +    F.EraseSection(S);
  +    if ((AX > 0) and (AY > 0)) then
  +    begin
  +      F.WriteInteger(S, 'X', AX);
  +      F.WriteInteger(S, 'Y', AY);
  +      F.WriteInteger(S, 'Z', AZ);
  +    end; 
  +  finally
  +    F.Free;
  +  end;
  +end;
  +
  +procedure TCorpses.Load(Index: Byte);
  +var
  +  F: TIniFile;  
  +  S: string;
  +begin
  +  F := TIniFile.Create(GetPath() + 'morgue.thi');
  +  try
  +    S := IntToStr(Index);
  +    FCorpse[Index].X := F.ReadInteger(S, 'X', 0);
  +    FCorpse[Index].Y := F.ReadInteger(S, 'Y', 0);
  +    FCorpse[Index].Z := F.ReadInteger(S, 'Z', 0);
     finally
       F.Free;
     end;
  
positive.code:   private
      FCorpse: array [0..CorpseMax - 1] of TCorpse;
      procedure Save(Index, AX, AY, AZ: Byte);
    public
      constructor Create;
      destructor Destroy; override;
  
negative.code:     for I := 0 to CorpseMax - 1 do
      begin
        S := IntToStr(I);
        if ((FCorpse[I].X = 0) or (FCorpse[I].Y = 0)) then
          F.EraseSection(S);
        if not F.SectionExists(S) then
        begin
          Save(I, Player.X, Player.Y, Ord(Map.Deep));
  