diff --git a/src/Taskell/Events/Actions/Normal.hs b/src/Taskell/Events/Actions/Normal.hs
--- a/src/Taskell/Events/Actions/Normal.hs
+++ b/src/Taskell/Events/Actions/Normal.hs
@@ -52,7 +52,8 @@
     , (A.MoveRightTop, (write =<<) . (top =<<) . (right =<<) . (moveRightTop =<<) . store)
     , (A.MoveLeftBottom, (write =<<) . (bottom =<<) . (left =<<) . (moveLeftBottom =<<) . store)
     , (A.MoveRightBottom, (write =<<) . (bottom =<<) . (right =<<) . (moveRightBottom =<<) . store)
-    , (A.Complete, (write =<<) . (moveToLast =<<) . (clearDate =<<) . store)
+    , (A.Complete, (write =<<) . (moveToLastBottom =<<) . (clearDate =<<) . store)
+    , (A.CompleteToTop, (write =<<) . (moveToLastTop =<<) . (clearDate =<<) . store)
     , (A.MoveMenu, showMoveTo)
     -- lists
     , (A.ListNew, (createListStart =<<) . store)
diff --git a/src/Taskell/Events/Actions/Types.hs b/src/Taskell/Events/Actions/Types.hs
--- a/src/Taskell/Events/Actions/Types.hs
+++ b/src/Taskell/Events/Actions/Types.hs
@@ -32,6 +32,7 @@
     | MoveLeftBottom
     | MoveRightBottom
     | Complete
+    | CompleteToTop
     | MoveMenu
     | ListNew
     | ListEdit
@@ -76,6 +77,7 @@
 read "moveLeftBottom"  = MoveLeftBottom
 read "moveRightBottom" = MoveRightBottom
 read "complete"        = Complete
+read "completeToTop"   = CompleteToTop
 read "moveMenu"        = MoveMenu
 read "listNew"         = ListNew
 read "listEdit"        = ListEdit
diff --git a/src/Taskell/Events/State.hs b/src/Taskell/Events/State.hs
--- a/src/Taskell/Events/State.hs
+++ b/src/Taskell/Events/State.hs
@@ -33,7 +33,8 @@
     , moveRightTop
     , moveLeftBottom
     , moveRightBottom
-    , moveToLast
+    , moveToLastBottom
+    , moveToLastTop
     , delete
     , selectList
     , listLeft
@@ -250,14 +251,20 @@
 moveRightTop :: Stateful
 moveRightTop = moveHorizontal 1 Lists.Top
 
-moveToLast :: Stateful
-moveToLast state =
-    if idx == cur
-        then pure state
-        else moveHorizontal (idx - cur) Lists.Bottom state
+moveToLast :: Lists.ListPosition -> Stateful
+moveToLast pos state =
+  if idx == cur
+      then pure state
+      else moveHorizontal (idx - cur) pos state
   where
     idx = length (state ^. lists) - 1
     cur = getCurrentList state
+
+moveToLastBottom :: Stateful
+moveToLastBottom = moveToLast Lists.Bottom
+
+moveToLastTop :: Stateful
+moveToLastTop = moveToLast Lists.Top
 
 selectList :: Char -> Stateful
 selectList idx state =
diff --git a/src/Taskell/IO/Keyboard.hs b/src/Taskell/IO/Keyboard.hs
--- a/src/Taskell/IO/Keyboard.hs
+++ b/src/Taskell/IO/Keyboard.hs
@@ -68,6 +68,7 @@
     , (BChar 'H', A.MoveLeftBottom)
     , (BChar 'L', A.MoveRightBottom)
     , (BKey "Space", A.Complete)
+    , (BChar 'T', A.CompleteToTop)
     , (BChar 'm', A.MoveMenu)
     , (BChar 'N', A.ListNew)
     , (BChar 'E', A.ListEdit)
diff --git a/src/Taskell/UI/Draw/Modal/Help.hs b/src/Taskell/UI/Draw/Modal/Help.hs
--- a/src/Taskell/UI/Draw/Modal/Help.hs
+++ b/src/Taskell/UI/Draw/Modal/Help.hs
@@ -34,7 +34,9 @@
     , ([A.MoveLeftBottom, A.MoveRightBottom], "Shift task left / right (to bottom of list)")
     , ([A.MoveLeftTop, A.MoveRightTop], "Shift task left / right (to top of list)")
     , ( [A.Complete]
-      , "Move task to last list and remove any due dates / Mark subtask as (in)complete")
+      , "Move task to the bottom of last list and remove any due dates / Mark subtask as (in)complete")
+    , ([A.CompleteToTop]
+      , "Move task to the top of last list and remove any due dates / Mark subtask as (in)complete")
     , ([A.MoveMenu], "Move task to specific list")
     , ([A.Delete], "Delete task")
     , ([A.Undo], "Undo")
diff --git a/taskell.cabal b/taskell.cabal
--- a/taskell.cabal
+++ b/taskell.cabal
@@ -1,6 +1,6 @@
 cabal-version:      1.12
 name:               taskell
-version:            1.11.0
+version:            1.11.1
 license:            BSD3
 license-file:       LICENSE
 copyright:          2019 Mark Wales
@@ -118,25 +118,25 @@
     build-depends:
         aeson >=1.5.6.0,
         attoparsec >=0.13.2.5,
-        base >=4.14.1.0 && <=5,
-        brick >=0.58.1,
-        bytestring >=0.10.12.0,
+        base >=4.15.0.0 && <=5,
+        brick >=0.62,
+        bytestring >=0.10.12.1,
         classy-prelude >=1.5.0,
         config-ini >=0.2.4.0,
-        containers >=0.6.2.1,
-        directory >=1.3.6.0,
-        file-embed >=0.0.13.0,
+        containers >=0.6.4.1,
+        directory >=1.3.6.1,
+        file-embed >=0.0.14.0,
         fold-debounce >=0.2.0.9,
-        http-client >=0.6.4.1,
+        http-client >=0.7.8,
         http-conduit >=2.3.8,
         http-types >=0.12.3,
-        lens >=4.19.2,
+        lens >=5.0.1,
         mtl >=2.2.2,
-        template-haskell >=2.16.0.0,
+        template-haskell >=2.17.0.0,
         text >=1.2.4.1,
         time >=1.9.3,
         tz >=0.1.3.5,
-        vty >=5.32
+        vty >=5.33
 
 executable taskell
     main-is:            Main.hs
@@ -149,7 +149,7 @@
 
     ghc-options:        -threaded -rtsopts -with-rtsopts=-N
     build-depends:
-        base >=4.14.1.0,
+        base >=4.15.0.0,
         classy-prelude >=1.5.0,
         taskell -any,
         tz >=0.1.3.5
@@ -188,19 +188,19 @@
     ghc-options:        -threaded -rtsopts -with-rtsopts=-N
     build-depends:
         aeson >=1.5.6.0,
-        base >=4.14.1.0,
+        base >=4.15.0.0,
         classy-prelude >=1.5.0,
-        containers >=0.6.2.1,
-        file-embed >=0.0.13.0,
-        lens >=4.19.2,
+        containers >=0.6.4.1,
+        file-embed >=0.0.14.0,
+        lens >=5.0.1,
         mtl >=2.2.2,
         raw-strings-qq >=1.1,
         taskell -any,
-        tasty >=1.2.3,
+        tasty >=1.4.1,
         tasty-discover >=4.2.2,
         tasty-expected-failure >=0.12.3,
         tasty-hunit >=0.10.0.3,
         text >=1.2.4.1,
         time >=1.9.3,
         tz >=0.1.3.5,
-        vty >=5.32
+        vty >=5.33
diff --git a/templates/bindings.ini b/templates/bindings.ini
--- a/templates/bindings.ini
+++ b/templates/bindings.ini
@@ -41,6 +41,8 @@
 moveRightBottom = L
 # move to bottom of last list
 complete = <Space>
+# move to top of last list
+compeleteToTop = T
 # select a list to move to
 moveMenu = m
 
diff --git a/test/Taskell/IO/Keyboard/ParserTest.hs b/test/Taskell/IO/Keyboard/ParserTest.hs
--- a/test/Taskell/IO/Keyboard/ParserTest.hs
+++ b/test/Taskell/IO/Keyboard/ParserTest.hs
@@ -66,6 +66,7 @@
     , (BChar 'H', A.MoveLeftBottom)
     , (BChar 'L', A.MoveRightBottom)
     , (BKey "Space", A.Complete)
+    , (BChar 'T', A.CompleteToTop)
     , (BChar 'm', A.MoveMenu)
     , (BChar 'N', A.ListNew)
     , (BChar 'E', A.ListEdit)
diff --git a/test/Taskell/IO/Keyboard/data/bindings.ini b/test/Taskell/IO/Keyboard/data/bindings.ini
--- a/test/Taskell/IO/Keyboard/data/bindings.ini
+++ b/test/Taskell/IO/Keyboard/data/bindings.ini
@@ -33,6 +33,7 @@
 moveLeft = H
 moveRight = L
 complete = <Space>
+completeToTop = T
 moveMenu = m
 
 # lists
