diff --git a/bin/fix-submits b/bin/fix-submits
index 9fccdc73e2cf501b8e8e2e00acbeefd0a7311842..8bde2641512ea89c6d7bcd05fc45a3de698707f4 100755
--- a/bin/fix-submits
+++ b/bin/fix-submits
@@ -1,6 +1,7 @@
 #!/usr/bin/env python3
 
 import argparse
+import datetime
 import os
 from sqlalchemy.orm import joinedload
 import subprocess
@@ -29,7 +30,7 @@ def fix_paper(id: int):
              .get(id))
     assert paper is not None
     assert paper.orig_file_name is not None
-    print(f"=== Paper #{id} ({paper.orig_file_name})")
+    print(f"=== Paper #{id} ({paper.orig_file_name}){' [RETRY]' if paper.fixed_at else ''}")
 
     tmp_file = tempfile.NamedTemporaryFile(dir=mo.util.data_dir('tmp'), prefix='fix-')
     res = subprocess.run(['qpdf', os.path.join(mo.util.data_dir('submits'), paper.orig_file_name), tmp_file.name])
@@ -37,16 +38,16 @@ def fix_paper(id: int):
         sub = mo.submit.Submitter()
         try:
             sub.submit_fix(paper, tmp_file.name)
-            sess.commit()
             fixed += 1
         except mo.submit.SubmitException:
-            sess.rollback()
             errors += 1
     else:
         print(f'--> ERROR: qpdf failed with exit code {res.returncode}')
-        sess.rollback()
         errors += 1
 
+    paper.fixed_at = datetime.datetime.now()
+    sess.commit()
+
 
 if args.id is not None:
     fix_paper(args.id)