 
   moveLinewise: (selection) ->
     reversed = selection.isReversed()
-
     translation = switch @direction
-      when 'up' then {before: [[-1, 0], [0, 0]], after: [[0, 0], [-1, 0]]}
-      when 'down' then {before: [[0, 0], [1, 0]], after: [[1, 0], [0, 0]]}
-
-    rangeToMutate = selection.getBufferRange().translate(translation.before...)
+      when 'up' then [[-1, 0], [0, 0]]
+      when 'down' then [[0, 0], [1, 0]]
+
+    rangeToMutate = selection.getBufferRange().translate(translation...)
     extendLastBufferRowToRow(@editor, rangeToMutate.end.row)
     selection.setBufferRange(rangeToMutate)
-    rangeToSelect = @rotateSelectedRows(selection).translate(translation.after...)
+    rangeToSelect = @rotateSelectedRows(selection).translate(translation.reverse()...)
     selection.setBufferRange(rangeToSelect, {reversed})
 
   rotateSelectedRows: (selection) ->

    else
      true

  execute: ->
    wise = @getWise()
    selections = @editor.getSelections()

        linewiseDisposable = switchToLinewise(@editor)

      @countTimes @getCount(), =>
        for selection in @getSelections()
          switch wise
            when 'linewise'
              @moveLinewise(selection) if @canMove(selection, wise)
            when 'characterwise'
              @moveCharacterwise(selection) if @canMove(selection, wise)
            else
              @moveCharacterwise(selection) if @canMove(selection, wise)

      linewiseDisposable?.dispose()

