diff --git a/apps/i2psnark/java/src/org/klomp/snark/Storage.java b/apps/i2psnark/java/src/org/klomp/snark/Storage.java
index 6b49819b14fced834944bd863720901a8875ed11..fd3d034f0b2a9e02f5be288eb2f933079022a0aa 100644
--- a/apps/i2psnark/java/src/org/klomp/snark/Storage.java
+++ b/apps/i2psnark/java/src/org/klomp/snark/Storage.java
@@ -312,7 +312,7 @@ public class Storage
             if (lm <= 0 || lm > savedTime)
                 useSavedBitField = false;
         }
-        if (base.exists() && !base.canWrite())  // hope we can get away with this, if we are only seeding...
+        if (base.exists() && ((useSavedBitField && savedBitField.complete()) || !base.canWrite()))
             rafs[0] = new RandomAccessFile(base, "r");
         else
             rafs[0] = new RandomAccessFile(base, "rw");
@@ -341,7 +341,7 @@ public class Storage
                 if (lm <= 0 || lm > savedTime)
                     useSavedBitField = false;
             }
-            if (f.exists() && !f.canWrite()) // see above re: only seeding
+            if (f.exists() && ((useSavedBitField && savedBitField.complete()) || !f.canWrite()))
                 rafs[i] = new RandomAccessFile(f, "r");
             else
                 rafs[i] = new RandomAccessFile(f, "rw");