     delete @displayBuffer.markers[@id]
 
   notifyObservers: ({oldHeadBufferPosition, oldTailBufferPosition, bufferChanged}) ->
-    oldHeadScreenPosition = @previousHeadScreenPosition
+    oldHeadScreenPosition = @getHeadScreenPosition()
+    @headScreenPosition = null
     newHeadScreenPosition = @getHeadScreenPosition()
-    @previousHeadScreenPosition = newHeadScreenPosition
 
-    oldTailScreenPosition = @previousTailScreenPosition
+    oldTailScreenPosition = @getTailScreenPosition()
+    @tailScreenPosition = null
     newTailScreenPosition = @getTailScreenPosition()
-    @previousTailScreenPosition = newTailScreenPosition
 
     return if _.isEqual(newHeadScreenPosition, oldHeadScreenPosition) and _.isEqual(newTailScreenPosition, oldTailScreenPosition)
 

class DisplayBufferMarker
  observers: null
  bufferMarkerSubscription: null
  previousHeadScreenPosition: null
  previousTailScreenPosition: null

  constructor: ({@id, @displayBuffer}) ->
    @buffer = @displayBuffer.buffer

  observeBufferMarkerIfNeeded: ->
    return if @observers
    @observers = []
    @getHeadScreenPosition() # memoize current value
    @getTailScreenPosition() # memoize current value
    @bufferMarkerSubscription =
      @buffer.observeMarker @id, ({oldHeadPosition, newHeadPosition, oldTailPosition, newTailPosition, bufferChanged}) =>
        @notifyObservers
