diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,6 +1,14 @@
 Changes
 =======
 
+Version 0.10.2
+--------------
+
+* `hGetTerminalSize` now assumes a terminal is no bigger than 9,999 by 9,999
+  (previously, no bigger than 999 by 999).
+* On Windows, fix a bug where emulated cursor movement functions differed from
+  Windows 10 (movement bounded by the current viewport).
+
 Version 0.10.1
 --------------
 
diff --git a/ansi-terminal.cabal b/ansi-terminal.cabal
--- a/ansi-terminal.cabal
+++ b/ansi-terminal.cabal
@@ -1,5 +1,5 @@
 Name:                ansi-terminal
-Version:             0.10.1
+Version:             0.10.2
 Cabal-Version:       >= 1.8
 Category:            User Interfaces
 Synopsis:            Simple ANSI terminal support, with Windows compatibility
diff --git a/src/System/Console/ANSI/Windows/Emulator.hs b/src/System/Console/ANSI/Windows/Emulator.hs
--- a/src/System/Console/ANSI/Windows/Emulator.hs
+++ b/src/System/Console/ANSI/Windows/Emulator.hs
@@ -77,9 +77,15 @@
 adjustCursorPosition handle change_x change_y = do
   screen_buffer_info <- getConsoleScreenBufferInfo handle
   let window = csbi_window screen_buffer_info
+      l = rect_left window
+      t = rect_top window
+      r = rect_right window
+      b = rect_bottom window
       (COORD x y) = csbi_cursor_position screen_buffer_info
-      cursor_pos'= COORD (change_x (rect_left window) x)
-                         (change_y (rect_top window) y)
+      clamp mn mx = max mn . min mx
+      x' = clamp l r (change_x l x)
+      y' = clamp t b (change_y t y)
+      cursor_pos' = COORD x' y'
   setConsoleCursorPosition handle cursor_pos'
 
 hCursorUp h n
diff --git a/src/includes/Common-Include.hs b/src/includes/Common-Include.hs
--- a/src/includes/Common-Include.hs
+++ b/src/includes/Common-Include.hs
@@ -287,8 +287,8 @@
 hGetTerminalSize :: Handle -> IO (Maybe (Int, Int))
 hGetTerminalSize h = do
   hSaveCursor h
-  hSetCursorPosition h 999 999  -- Attempt to set the cursor position beyond the
-                                -- bottom right corner of the terminal.
+  hSetCursorPosition h 9999 9999  -- Attempt to set the cursor position beyond
+                                  -- the bottom right corner of the terminal.
   mPos <- hGetCursorPosition h
   hRestoreCursor h
   hFlush h -- ensure the restore cursor position code is sent to the
