Dear list, I have the following sample file: \starttext whatever \startluacode luatex.wrapup( function() local t = {} local pdf_file_name = tex.jobname..".pdf" local sha_pdf = utilities.sha2.hash256(io.loaddata(pdf_file_name)) local c_r = environment.currentrun t[c_r] = sha_pdf local exists_pdf = ("%s_%s-%s.pdf"):format(c_r-1, tex.jobname, t[c_r-1]) if io.exists(exists_pdf) then os.remove(exists_pdf) end os.rename(pdf_file_name, ("%s_%s-%s.pdf"):format(c_r, tex.jobname, sha_pdf)) end ) \stopluacode \stoptext In short, it adds its SHA256 to the final filename. Since renames the PDF document in each run, I would like to remove the output from the previous run. The table seems not to store the value from a previous run. I see now that I am creating it again with each run. Is there any way to check if compilation needs any other run? Many thanks for your help, Pablo