anchor.diff:              // We do not care for errors here.
               if JunkBytes<MaxJunkBytes then begin
                   // Be sure the tag is only written if we did not reach MaxJunkBytes.
  -                if not Frame.Write(Output) then begin
  +                if (not SimulateActions) and (not Frame.Write(Output)) then begin
                       WriteLn('Error writing frame to cleaned output file.');
  +                end else begin
  +                    if JunkBytes>0 then begin
  +                        WriteLn('Skipped junk data of ',JunkBytes,' bytes in between audio frames.');
  +                        JunkBytes:=0;
  +                    end;
                   end;
               end;
           until JunkBytes=MaxJunkBytes;
   
  -        // If there is more data, and this data is an ID3v1 tag, copy it, too.
  -        Input.Seek(-ID3v1TagSize,soFromEnd);
  -        Tag1:=TID3v1Tag.Create;
  -        Tag1.Read(Input);
  -        Tag1.Write(Output);
  -        Tag1.Free;
  +        if Input.Position<Input.Size then begin
  +           WriteLn('There is too much junk in between audio frames, aborting.');
  +        end;
       end;
   
       Frame.Free;
   
  +    // If there is more data, and this data is an ID3v1 tag, copy it, too.
  +    Input.Seek(-ID3v1TagSize,soFromEnd);
  +    Tag1:=TID3v1Tag.Create;
  +    if Tag1.Read(Input) then begin
  +        Result.HasID3v1Tag:=True;
  +        Write('Found ID3v1 tag at end of file, ');
  +        if CleanFiles then begin
  +            Write('copying.');
  +            if SimulateActions then begin
  +                Write(' [SIMULATION]');
  +            end else begin
  +                Tag1.Write(Output);
  +            end;
  +            WriteLn;
  +        end else begin
  +            WriteLn('skipping.');
  +        end;
  +    end;
  +    Tag1.Free;
  +
       Input.Free;
  -    if CleanFiles then begin
  +    if CleanFiles and (not SimulateActions) then begin
           Output.Free;
           DeleteFile(PChar(FileName));
           RenameFile(FileName+'.cleaned',FileName);
  
positive.code: 
          if Result.FileType<>mftNone then begin
              if JunkBytes>0 then begin
                  WriteLn('Skipping junk data of ',JunkBytes,' bytes before first frame.');
                  Result.HasJunkData:=True;
              end;
              WriteLn('Found ',Version,' audio frame.');
          end;
      except
          on ERangeError do begin
  
negative.code:                     end;
                      WriteLn(' been renamed.');
                  end else begin
                      WriteLn('The file has successfully been renamed. [SIMULATION]');
                  end;
              end else begin
                  WriteLn(', skipping rename.');
              end;
  
              WriteLn;
  