diff --git a/bundles/org.eclipse.equinox.p2.engine/src/org/eclipse/equinox/internal/p2/engine/ParameterizedProvisioningAction.java b/bundles/org.eclipse.equinox.p2.engine/src/org/eclipse/equinox/internal/p2/engine/ParameterizedProvisioningAction.java
index eed4c31..2ab4395 100644
--- a/bundles/org.eclipse.equinox.p2.engine/src/org/eclipse/equinox/internal/p2/engine/ParameterizedProvisioningAction.java
+++ b/bundles/org.eclipse.equinox.p2.engine/src/org/eclipse/equinox/internal/p2/engine/ParameterizedProvisioningAction.java
@@ -75,13 +75,14 @@
 		actualParameters.put(variableName, value);
 
 		if (value instanceof Value) {
-			if (allowInfixReplacement == false && variableBeginIndex == 0 && variableEndIndex == parameterValue.length() - 1)
-				return value;
+			if (allowInfixReplacement == false && variableBeginIndex == 0 && variableEndIndex == parameterValue.length() - 1) {
+				return ((Value<?>) value).getValue();
+			}
 
 			Value<?> result = (Value<?>) value;
-			if (result.getClazz() == String.class)
+			if (result.getClazz() == String.class) {
 				value = result.getValue();
-			else
+			} else
 				throw new RuntimeException("The type of the variable is expected to be a String"); //$NON-NLS-1$
 		}
 
diff --git a/bundles/org.eclipse.equinox.p2.engine/src/org/eclipse/equinox/internal/p2/engine/Phase.java b/bundles/org.eclipse.equinox.p2.engine/src/org/eclipse/equinox/internal/p2/engine/Phase.java
index ccc05ef..a981318 100644
--- a/bundles/org.eclipse.equinox.p2.engine/src/org/eclipse/equinox/internal/p2/engine/Phase.java
+++ b/bundles/org.eclipse.equinox.p2.engine/src/org/eclipse/equinox/internal/p2/engine/Phase.java
@@ -17,7 +17,8 @@
 import org.eclipse.equinox.internal.provisional.p2.core.eventbus.IProvisioningEventBus;
 import org.eclipse.equinox.p2.engine.IProfile;
 import org.eclipse.equinox.p2.engine.ProvisioningContext;
-import org.eclipse.equinox.p2.engine.spi.*;
+import org.eclipse.equinox.p2.engine.spi.ProvisioningAction;
+import org.eclipse.equinox.p2.engine.spi.Touchpoint;
 import org.eclipse.osgi.util.NLS;
 
 public abstract class Phase {
@@ -170,7 +171,7 @@
 
 						parameters = touchpointToTouchpointOperandParameters.get(touchpoint);
 					}
-					if (lastResult != null && lastResult != Value.NO_VALUE) {
+					if (lastResult != null) {
 						parameters = new HashMap<String, Object>(parameters);
 						parameters.put(LAST_RESULT_INTERNAL_NAME, lastResult);
 					}
@@ -180,7 +181,7 @@
 					try {
 						session.recordActionExecute(action, parameters);
 						actionStatus = action.execute(parameters);
-						lastResult = action.getResult().getValue();
+						lastResult = action.getResult();
 					} catch (RuntimeException e) {
 						if (!forced)
 							throw e;
diff --git a/bundles/org.eclipse.equinox.p2.tests/plugin.xml b/bundles/org.eclipse.equinox.p2.tests/plugin.xml
index cec9954..70f56fb 100644
--- a/bundles/org.eclipse.equinox.p2.tests/plugin.xml
+++ b/bundles/org.eclipse.equinox.p2.tests/plugin.xml
@@ -53,6 +53,22 @@
           version="1.0.0">
     </action>
   </extension>
+   <extension
+       point="org.eclipse.equinox.p2.engine.actions">
+    <action
+          class="org.eclipse.equinox.p2.tests.engine.VariableTest2$Action"
+          name="test.actionForVariableTesting2"
+          version="1.0.0">
+    </action>
+  </extension>  
+    <extension
+       point="org.eclipse.equinox.p2.engine.actions">
+    <action
+          class="org.eclipse.equinox.p2.tests.engine.VariableTest3$Action"
+          name="test.actionForVariableTesting3"
+          version="1.0.0">
+    </action>
+  </extension>  
  <extension
        point="org.eclipse.equinox.p2.engine.actions">
     <action
diff --git a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/engine/AllTests.java b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/engine/AllTests.java
index c420ed9..1248def 100644
--- a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/engine/AllTests.java
+++ b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/engine/AllTests.java
@@ -38,6 +38,8 @@
 		suite.addTestSuite(TouchpointTest.class);
 		suite.addTestSuite(ProvisioningEventTest.class);
 		suite.addTestSuite(VariableTest.class);
+		suite.addTestSuite(VariableTest2.class);
+		suite.addTestSuite(VariableTest3.class);
 		return suite;
 	}
 
