         deltaY: deltaY
         newY: newY
         contentStartOffsetY: @contentStartOffsetY
-        transform: @getCurrentTransform()
+        # transform: @getCurrentTransform()
       }
 
       @lastTouchY = currentY
-      newY = @snapBoundery if newY > @snapBoundery
+
+      # top boundary
+      newY = @snapBoundary if newY > @snapBoundary
+
+      # bottom boundary
+      $el = $(@element)
+      newY = - $el.height() + ($el.parent().height() - @snapBoundary) if ( $el.height() + newY + @snapBoundary ) < $el.parent().height()
+
       # @startTouchY = currentY
       # return
       @animateTo(newY)

        name = 'snaptobounds' + (@animationIndex++)
        frames = []
        time = m.time * 0.6
        newY = if m.newY > @snapBoundery then @snapBoundery else m.newY
        frames.push { time: time * 0.5, css: 'translate3d(0,' + newY + 'px,0)' }
        frames.push { time: time, css: 'translate3d(0,' + 0 + 'px,0)' }
        framecss = @generateCSSKeyframes(frames,name,time)
        @globalStyleSheet.insertRule(framecss, 0)
        @element.style.webkitAnimation = name + " " + time + "ms linear both"
        @element.style.webkitAnimationPlayState = name ? "running" : "paused"
        console.log 'Playing snaptobounds animation', framecss if console.log
        normalEnd = (e) =>

      lines = [ '@-webkit-keyframes ' + name + ' {' ]
      keyframes.forEach (keyframe) ->
        percent = (keyframe.time / time) * 100
        frame = Math.floor(percent) + '% { '
        frame += '-webkit-transform: ' + keyframe.transform + ';'
        frame += '-webkit-transition: ' + keyframe.transition + ';' if keyframe.transition
        frame += '}'
        # D&&D(frame)
        lines.push frame
      lines.push '}'
