         stepsByWeek[stepsByWeek.length - 1].push step
       return stepsByWeek
 
-    scope.$watch('currentView + date + minDate + maxDate + currentView', ->
+    scope.$watch('date', ->
+      scope.position = scope.date if followDate
+      console.log "new date!"  if followDate
+    )
+
+    scope.$watch('activeBefore + activeAfter + currentView + position', ->
+      # need to update the steps.
+      return if not scope.steps? or not (scope.activeBefore? or scope.activeAfter?)
+
+      for step in scope.steps
+        date = moment(step.value)
+        isBefore = if scope.activeBefore? then date.isBefore(scope.activeBefore) else true
+        isAfter = if scope.activeAfter? then date.isAfter(scope.activeAfter) else true
+        step.active = isBefore and isAfter
+    )
+
+    scope.$watch('currentView + position + minDate + maxDate', ->
       # Get the starting date.
       step = steps[scope.currentView]
       stepDate = step.first(moment(scope.date))



  }


      date.add(offset)
      scope.setDate(date)


    ###
      Helper method that split the steps by week
