diff --git a/src/main/java/avatartranslator/AvatarBlock.java b/src/main/java/avatartranslator/AvatarBlock.java
index 2401f90bcb13a55178137ee449dd81d9896ade82..0343288f5018dfba66418697e73d52edec76696e 100644
--- a/src/main/java/avatartranslator/AvatarBlock.java
+++ b/src/main/java/avatartranslator/AvatarBlock.java
@@ -793,10 +793,12 @@ public class AvatarBlock extends AvatarElement implements AvatarStateMachineOwne
     
     public void removeConstantAttributes() {
         AvatarTransition at;
-        
-        if (constants == null) {
-            List<AvatarAttribute> newAttributes = new LinkedList<AvatarAttribute>();
-            constants = new LinkedList<AvatarAttribute>();
+
+
+
+        if ((constants == null) || (constants.size() == 0)) {
+            List<AvatarAttribute> newAttributes = new LinkedList<>();
+            constants = new LinkedList<>();
     
             for (AvatarAttribute attr : attributes) {
                 boolean toKeep = false;
@@ -804,13 +806,12 @@ public class AvatarBlock extends AvatarElement implements AvatarStateMachineOwne
                 if (attr.isTimer()) {
                     toKeep = true;
                 }
+
                 for (AvatarStateMachineElement elt : asm.getListOfElements()) {
 
                     if (elt instanceof AvatarTransition) {
                         at = (AvatarTransition) elt;
 
-
-
                         for (AvatarAction aa : at.getActions()) {
                             if (aa instanceof AvatarActionAssignment) {
                                if (((AvatarActionAssignment) aa).leftHand.getName().compareTo(attr.name) == 0) {
@@ -833,6 +834,10 @@ public class AvatarBlock extends AvatarElement implements AvatarStateMachineOwne
                         if (((AvatarRandom) elt).getVariable().compareTo(attr.name) == 0) {
                             toKeep = true;
                         }
+                    } else if (elt instanceof AvatarQueryOnSignal) {
+                        if (((AvatarQueryOnSignal) elt).getAttribute().getName().compareTo(attr.name) == 0) {
+                            toKeep = true;
+                        }
                     }
 
 
diff --git a/ttool/src/test/java/avatartranslator/AvatarExpressionTest.java b/ttool/src/test/java/avatartranslator/AvatarExpressionTest.java
index bf62d038cc0ed037ee991369eb48230afcd77cdb..66fc79e8218e0e15796558d65aa032bfee824f60 100644
--- a/ttool/src/test/java/avatartranslator/AvatarExpressionTest.java
+++ b/ttool/src/test/java/avatartranslator/AvatarExpressionTest.java
@@ -286,16 +286,16 @@ public class AvatarExpressionTest {
         e1 = new AvatarExpressionSolver("block1.x + block2.y");
         assertTrue(e1.buildExpression(as));
         e2 = new AvatarExpressionSolver("-block1.x / block1.y - 15 * block2.z + 1 == -46");
-        assertFalse(e2.buildExpression(as));
+        assertTrue(e2.buildExpression(as));
         e3 = new AvatarExpressionSolver("not(-block2.x / block2.z - not(block1.x + block2.y) * -2 + -(1) <= -(-4 + 7))");
         assertFalse(e3.buildExpression(as));
         e4 = new AvatarExpressionSolver("block1.x + block2.w");
         assertTrue(e4.buildExpression(as));
 
         assertTrue(e1.getResult(ss) == 17);
-        //assertTrue(e2.getResult(ss) == 1);
+        assertTrue(e2.getResult(ss) == 1);
         assertTrue(e3.getResult(ss) == 0);
-        //assertTrue(e4.getResult(ss) == -2);
+        assertTrue(e4.getResult(ss) == -2);
     }