lastvalue fix
diff --git a/player/js/utils/PropertyFactory.js b/player/js/utils/PropertyFactory.js
index 4b3f7d0..508566c 100644
--- a/player/js/utils/PropertyFactory.js
+++ b/player/js/utils/PropertyFactory.js
@@ -47,9 +47,9 @@
                     for(k = 0; k < kLen; k += 1){
                         this.v[k] = this.mult ? bezierData.points[ind].point[k]*this.mult : bezierData.points[ind].point[k];
                         this.pv[k] = bezierData.points[ind].point[k];
-                        if(this.lastValue[k] !== this.v[k]) {
+                        if(this.lastPValue[k] !== this.pv[k]) {
                             this.mdf = true;
-                            this.lastValue[k] = this.v[k];
+                            this.lastPValue[k] = this.pv[k];
                         }
                     }
                 }else{
@@ -74,9 +74,9 @@
                             for(k=0;k<kLen;k+=1){
                                 this.v[k] = this.mult ? bezierData.points[j].point[k]*this.mult : bezierData.points[j].point[k];
                                 this.pv[k] = bezierData.points[j].point[k];
-                                if(this.lastValue[k] !== this.v[k]) {
+                                if(this.lastPValue[k] !== this.pv[k]) {
                                     this.mdf = true;
-                                    this.lastValue[k] = this.v[k];
+                                    this.lastPValue[k] = this.pv[k];
                                 }
                             }
                             break;
@@ -87,9 +87,9 @@
                                 this.v[k] = this.mult ? (bezierData.points[j].point[k] + (bezierData.points[j+1].point[k] - bezierData.points[j].point[k])*segmentPerc)*this.mult : bezierData.points[j].point[k] + (bezierData.points[j+1].point[k] - bezierData.points[j].point[k])*segmentPerc;
                                 this.pv[k] = bezierData.points[j].point[k] + (bezierData.points[j+1].point[k] - bezierData.points[j].point[k])*segmentPerc;
 
-                                if(this.lastValue[k] !== this.v[k]) {
+                                if(this.lastPValue[k] !== this.pv[k]) {
                                     this.mdf = true;
-                                    this.lastValue[k] = this.v[k];
+                                    this.lastPValue[k] = this.pv[k];
                                 }
                             }
                             break;
@@ -154,16 +154,16 @@
                     if(len === 1){
                         this.v = this.mult ? keyValue*this.mult : keyValue;
                         this.pv = keyValue;
-                        if(this.lastValue != this.v){
+                        if(this.lastPValue != this.pv){
                             this.mdf = true;
-                            this.lastValue = this.v;
+                            this.lastPValue = this.pv;
                         }
                     }else{
                         this.v[i] = this.mult ? keyValue*this.mult : keyValue;
                         this.pv[i] = keyValue;
-                        if(this.lastValue[i] !== this.v[i]){
+                        if(this.lastPValue[i] !== this.pv[i]){
                             this.mdf = true;
-                            this.lastValue[i] = this.v[i];
+                            this.lastPValue[i] = this.pv[i];
                         }
                     }
                 }
@@ -285,6 +285,7 @@
         this.keyframes = data.k;
         this.offsetTime = elem.data.st;
         this.lastValue = -99999;
+        this.lastPValue = -99999;
         this.frameId = -1;
         this.k = true;
         this.mult = mult;
@@ -309,6 +310,7 @@
         this.v = new Array(data.k[0].s.length);
         this.pv = new Array(data.k[0].s.length);
         this.lastValue = new Array(data.k[0].s.length);
+        this.lastPValue = new Array(data.k[0].s.length);
         this.lastFrame = initFrame;
         checkExpressions.bind(this)(elem,data);
     }
diff --git a/player/js/utils/expressions/ExpressionManager.js b/player/js/utils/expressions/ExpressionManager.js
index 73e3358..e0ed095 100644
--- a/player/js/utils/expressions/ExpressionManager.js
+++ b/player/js/utils/expressions/ExpressionManager.js
@@ -443,7 +443,7 @@
         var val = data.x;
         var transform,content,effect;
         var thisComp = elem.comp;
-        var fnStr = 'var fn = function(){'+val+';this.v = $bm_rt;this.mdf=true;}';
+        var fnStr = 'var fn = function(){'+val+';this.v = $bm_rt;}';
         eval(fnStr);
         var bindedFn = fn.bind(this);
         var numKeys = data.k.length;
@@ -499,16 +499,31 @@
             value = this.pv;
             time = this.comp.renderedFrame;
             bindedFn();
+            var i,len;
             if(this.mult){
                 if(typeof this.v === 'number'){
                     this.v *= this.mult;
                 }else{
-                    var i, len = this.v.length;
+                    len = this.v.length;
                     for(i = 0; i < len; i += 1){
                         this.v[i] *= this.mult;
                     }
                 }
             }
+            if(typeof this.v === 'number'){
+                if(this.lastValue !== this.v){
+                    this.lastValue = this.v;
+                    this.mdf = true;
+                }
+            }else{
+                len = this.v.length;
+                for(i = 0; i < len; i += 1){
+                    if(this.v[i] !== this.lastValue[i]){
+                        this.lastValue[i] = this.v[i];
+                        this.mdf = true;
+                    }
+                }
+            }
         }
         return execute;
     }