 
       if sticky.y?
         # BOUNDED BY SCROLL DISTANCE
-        console.log "\tBOUNDED BY SCROLL DISTANCE: |#{k} - #{sticky.y}| <= |#{scroller.viewport_top} - #{scroller.last_viewport_top}|, strong" if debug
+        console.log "\tBOUNDED BY SCROLL DISTANCE: |#{k} - #{scroller.last_positions[k]}| <= |#{scroller.viewport_top} - #{scroller.last_viewport_top}|, strong" if debug
         solver.addConstraint new c.Inequality \
           y_pos[k], \
           c.LEQ,
-          sticky.y + scroll_distance, \
+          scroller.last_positions[k] + scroll_distance, \
           c.Strength.strong
 
         solver.addConstraint new c.Inequality \
           y_pos[k], \
           c.GEQ,
-          sticky.y - scroll_distance, \
+          scroller.last_positions[k] - scroll_distance, \
           c.Strength.strong
 
       # CLOSE TO TOP

    # We'll iterate through each component in order of their stacking priority
    y_stack = 0

    sorted = _.sortBy(_.values(stickies), (v) -> v.stack_priority)

    ########
    # Linear constraints

    is_stuck = !sticky.stuck
    sticky.stuck = is_stuck
    if !is_stuck
      sticky.y = sticky.x = null
    save sticky

    if v.stuck_key?
