diff --git a/nars_core/nars/inference/CompositionalRules.java b/nars_core/nars/inference/CompositionalRules.java
index c5d1e7a1258279ca11e967387932039d1ff99dcc..75e39f10e8a68c24186aaf7af0f763866562cc67 100644
--- a/nars_core/nars/inference/CompositionalRules.java
+++ b/nars_core/nars/inference/CompositionalRules.java
@@ -26,6 +26,7 @@ import nars.entity.BudgetValue;
 import nars.entity.Concept;
 import nars.control.DerivationContext;
 import nars.entity.Sentence;
+import nars.entity.Stamp;
 import nars.entity.Task;
 import nars.entity.TruthValue;
 import static nars.inference.TruthFunctions.comparison;
@@ -191,6 +192,14 @@ public final class CompositionalRules {
         if (term2 == null) {
             return;
         }
+        
+        long delta = 0;
+        if ((term2 instanceof Conjunction) && (((CompoundTerm) term2).term[0] instanceof Interval)) {
+                 Interval interval = (Interval) ((CompoundTerm) term2).term[0];
+                 delta = interval.getTime(nal.memory);
+                 term2 = ((CompoundTerm)term2).setComponent(0, null, nal.mem());
+        }
+        
         Task task = nal.getCurrentTask();
         Sentence sentence = task.sentence;
         Sentence belief = nal.getCurrentBelief();
@@ -264,6 +273,14 @@ public final class CompositionalRules {
         }
         if (truth != null) {
             BudgetValue budget = BudgetFunctions.compoundForward(truth, content, nal);
+            if (delta != 0) {
+                long baseTime = task.sentence.getOccurenceTime();
+                if (baseTime != Stamp.ETERNAL) {
+                    baseTime += delta;
+                    nal.getTheNewStamp().setOccurrenceTime(baseTime);
+                }
+            }
+            
             nal.doublePremiseTask(content, truth, budget, false, true); //(allow overlap), a form of detachment
         }
     }
diff --git a/nars_core/nars/inference/SyllogisticRules.java b/nars_core/nars/inference/SyllogisticRules.java
index f948b25458b17911a9a9eae348815e49158a30ea..240e08e0eff2928294c68992133a78e73d7c6400 100644
--- a/nars_core/nars/inference/SyllogisticRules.java
+++ b/nars_core/nars/inference/SyllogisticRules.java
@@ -397,15 +397,13 @@ public final class SyllogisticRules {
             return;
         
         int order = statement.getTemporalOrder();
-        boolean shiftedTimeForward = false;
-        if ((order != ORDER_NONE) && (order!=ORDER_INVALID) && (!taskSentence.isGoal()) && (!taskSentence.isQuest())) {
-            long baseTime = subSentence.getOccurenceTime();
-            if (baseTime == Stamp.ETERNAL) {
+        if ((order != ORDER_NONE) && (order!=ORDER_INVALID)) {
+            long baseTime = subSentence.getOccurenceTime(); 
+            if (baseTime == Stamp.ETERNAL) { // =/> always should produce events
                 baseTime = nal.getTime();
             }
             long inc = order * nal.mem().param.duration.get();
             long time = (side == 0) ? baseTime+inc : baseTime-inc;
-            shiftedTimeForward = (side == 0);
             nal.getTheNewStamp().setOccurrenceTime(time);
         }
 
@@ -588,16 +586,11 @@ public final class SyllogisticRules {
         }
         
         if (delta != 0) {
-            long baseTime = (belief.term instanceof Implication) ?
-                taskSentence.getOccurenceTime() : belief.getOccurenceTime();
-            if (baseTime == Stamp.ETERNAL) {
-                baseTime = nal.getTime();
-            }
-            if(premise1.getTemporalOrder()==TemporalRules.ORDER_CONCURRENT) {
-                return; //https://groups.google.com/forum/#!topic/open-nars/ZfCM416Dx1M - Interval Simplification
+            long baseTime = taskSentence.getOccurenceTime();
+            if (baseTime != Stamp.ETERNAL) {
+                baseTime += delta;
+                nal.getTheNewStamp().setOccurrenceTime(baseTime);
             }
-            baseTime += delta;
-            nal.getTheNewStamp().setOccurrenceTime(baseTime);
         }
         
         TruthValue truth1 = taskSentence.truth;
diff --git a/nars_core/nars/language/Conjunction.java b/nars_core/nars/language/Conjunction.java
index f2df71dbe88dc16be67bd57318af145bf49eab70..c4a834893de0ee3d1fd0006b87d0d49f9e47f46f 100644
--- a/nars_core/nars/language/Conjunction.java
+++ b/nars_core/nars/language/Conjunction.java
@@ -37,17 +37,6 @@ public class Conjunction extends CompoundTerm {
     public final int temporalOrder;
     public final boolean isSpatial;
 
-    public static Term[] removeFirstInterval(Term[] arg) {
-        if(arg[0] instanceof Interval) {
-            Term[] argNew = new Term[arg.length - 1];
-            for(int i=1;i<arg.length;i++) {
-                argNew[i - 1] = arg[i];
-            }
-            return argNew;
-        }
-        return arg;
-    }
-    
     /**
      * Constructor with partial values, called by make
      *
@@ -230,7 +219,8 @@ public class Conjunction extends CompoundTerm {
         }                         // special case: single component
         
         if (temporalOrder == TemporalRules.ORDER_FORWARD) {
-            Term[] newArgList = removeFirstInterval(spatial ? argList : flatten(argList, temporalOrder, spatial));
+            Term[] newArgList = spatial ? argList : flatten(argList, temporalOrder, spatial);
+            
             if(newArgList.length == 1) {
                 return newArgList[0];
             }