diff --git a/player/js/utils/shapes/ZigZagModifier.js b/player/js/utils/shapes/ZigZagModifier.js
index 2b78ade..45047cc 100644
--- a/player/js/utils/shapes/ZigZagModifier.js
+++ b/player/js/utils/shapes/ZigZagModifier.js
@@ -13,7 +13,7 @@
 ZigZagModifier.prototype.initModifierProperties = function (elem, data) {
   this.getValue = this.processKeys;
   this.amplitude = PropertyFactory.getProp(elem, data.s, 0, null, this);
-  this.frequency = PropertyFactory.getProp(elem, data.pt, 0, null, this);
+  this.frequency = PropertyFactory.getProp(elem, data.r, 0, null, this);
   this._isAnimated = this.amplitude.effectsSequence.length !== 0 && this.frequency.effectsSequence.length !== 0;
 };
 
@@ -23,7 +23,7 @@
   clonedPath.c = path.c;
   var vX;
   var vY;
-  var direction = 1;
+  var direction = -1;
 
   if (!path.c) {
     pathLength -= 1;
@@ -36,8 +36,10 @@
     vY = bez.points[0][1];
     clonedPath.setTripleAt(vX, vY, vX, vY, vX, vY, clonedPath.length());
 
+    direction = -direction;
+
     for (var i = 0; i < frequency; i += 1) {
-      var t = (i + 0.5) / frequency;
+      var t = (i + 1) / (frequency + 1);
       var pt = bez.point(t);
       var normal = bez.normalAngle(t);
       vX = pt[0] + Math.cos(normal) * direction * amplitude;
@@ -47,8 +49,6 @@
       direction = -direction;
     }
 
-    direction = -direction;
-
     vX = bez.points[3][0];
     vY = bez.points[3][1];
     clonedPath.setTripleAt(vX, vY, vX, vY, vX, vY, clonedPath.length());
@@ -63,7 +63,7 @@
   var j;
   var jLen;
   var amplitude = this.amplitude.v;
-  var frequency = Math.max(1, Math.round(this.frequency.v));
+  var frequency = Math.max(0, Math.round(this.frequency.v));
 
   if (amplitude !== 0) {
     var shapeData;
