diff --git a/nars_core_java/nars/storage/Memory.java b/nars_core_java/nars/storage/Memory.java
index 2ac7913270bf56930387b4aa1f5d79425f6e62cf..d9326cac522346150510d67210c32c20c75eb8f3 100644
--- a/nars_core_java/nars/storage/Memory.java
+++ b/nars_core_java/nars/storage/Memory.java
@@ -313,10 +313,16 @@ public class Memory {
             }
             Stamp stamp = task.getSentence().getStamp();
             ArrayList<Term> chain = stamp.getChain();
-            if (currentBelief != null && !chain.contains(currentBelief.getContent())) {
+            if (currentBelief != null) {
+                if(chain.contains(currentBelief.getContent())) {
+                    chain.remove(currentBelief.getContent());
+                }
                 stamp.addToChain(currentBelief.getContent());
             }
-            if (currentTask != null && !single && !chain.contains(currentTask.getContent())) {
+            if (currentTask != null && !single) {
+                if(chain.contains(currentTask.getContent())) {
+                    chain.remove(currentTask.getContent());
+                }
                 stamp.addToChain(currentTask.getContent());
             }
             if (!revised) {