diff --git a/src/test/java/org/jetbrains/plugins/ideavim/action/motion/object/MotionInnerBigWordActionTest.kt b/src/test/java/org/jetbrains/plugins/ideavim/action/motion/object/MotionInnerBigWordActionTest.kt
index 1ff1f6c00..2c80e332a 100644
--- a/src/test/java/org/jetbrains/plugins/ideavim/action/motion/object/MotionInnerBigWordActionTest.kt
+++ b/src/test/java/org/jetbrains/plugins/ideavim/action/motion/object/MotionInnerBigWordActionTest.kt
@@ -124,6 +124,54 @@ class MotionInnerBigWordActionTest : VimTestCase() {
     )
   }
 
+  @Test
+  fun `test select WORD from whitespace at end of line with multiple lines`() {
+    doTest(
+      "viW",
+      """
+        |Lorem Ipsum....${c}....
+        |
+        |Lorem ipsum dolor sit amet
+        |consectetur adipiscing elit
+        |Sed in orci mauris.
+        |Cras id tellus in ex imperdiet egestas.
+      """.trimMargin().dotToSpace(),
+      """
+        |Lorem Ipsum${s}.......${c}.${se}
+        |
+        |Lorem ipsum dolor sit amet
+        |consectetur adipiscing elit
+        |Sed in orci mauris.
+        |Cras id tellus in ex imperdiet egestas.
+      """.trimMargin().dotToSpace(),
+      Mode.VISUAL(SelectionType.CHARACTER_WISE),
+    )
+  }
+
+  @Test
+  fun `test select WORD from whitespace at end of line with multiple lines 2`() {
+    doTest(
+      "viW",
+      """
+        |Lorem Ipsum
+        |
+        |Lorem ipsum dolor sit amet....${c}....
+        |....consectetur adipiscing elit
+        |Sed in orci mauris.
+        |Cras id tellus in ex imperdiet egestas.
+      """.trimMargin().dotToSpace(),
+      """
+        |Lorem Ipsum
+        |
+        |Lorem ipsum dolor sit amet${s}.......${c}.${se}
+        |....consectetur adipiscing elit
+        |Sed in orci mauris.
+        |Cras id tellus in ex imperdiet egestas.
+      """.trimMargin().dotToSpace(),
+      Mode.VISUAL(SelectionType.CHARACTER_WISE),
+    )
+  }
+
   @Test
   fun `test select WORD ignores punctuation`() {
     doTest(
@@ -154,6 +202,64 @@ class MotionInnerBigWordActionTest : VimTestCase() {
     )
   }
 
+  @Test
+  fun `test select WORD with existing left-to-right selection in whitespace selects trailing whitespace at end of file`() {
+    doTest(
+      listOf("v", "l", "iW"),
+      "Lorem ipsum dolor sit amet  ${c}      ",
+      "Lorem ipsum dolor sit amet  ${s}     ${c} ${se}",
+      Mode.VISUAL(SelectionType.CHARACTER_WISE),
+    )
+  }
+
+  @Test
+  fun `test select WORD from whitespace at end of line with multiple lines and existing left-to-right selection`() {
+    doTest(
+      listOf("v", "h", "iW"),
+      """
+        |Lorem Ipsum...${c}.....
+        |
+        |Lorem ipsum dolor sit amet
+        |consectetur adipiscing elit
+        |Sed in orci mauris.
+        |Cras id tellus in ex imperdiet egestas.
+      """.trimMargin().dotToSpace(),
+      """
+        |Lorem Ipsum${s}${c}....${se}....
+        |
+        |Lorem ipsum dolor sit amet
+        |consectetur adipiscing elit
+        |Sed in orci mauris.
+        |Cras id tellus in ex imperdiet egestas.
+      """.trimMargin().dotToSpace(),
+      Mode.VISUAL(SelectionType.CHARACTER_WISE),
+    )
+  }
+
+  @Test
+  fun `test select WORD from whitespace at end of line with multiple lines and existing left-to-right selection 2`() {
+    doTest(
+      listOf("v", "h", "iW"),
+      """
+        |Lorem Ipsum
+        |
+        |Lorem ipsum dolor sit amet...${c}.....
+        |    consectetur adipiscing elit
+        |Sed in orci mauris.
+        |Cras id tellus in ex imperdiet egestas.
+      """.trimMargin().dotToSpace(),
+      """
+        |Lorem Ipsum
+        |
+        |Lorem ipsum dolor sit amet${s}${c}....${se}....
+        |    consectetur adipiscing elit
+        |Sed in orci mauris.
+        |Cras id tellus in ex imperdiet egestas.
+      """.trimMargin().dotToSpace(),
+      Mode.VISUAL(SelectionType.CHARACTER_WISE),
+    )
+  }
+
   @Test
   fun `test select WORD with existing right-to-left selection selects start of word`() {
     doTest(
@@ -421,18 +527,6 @@ class MotionInnerBigWordActionTest : VimTestCase() {
     )
   }
 
-  // TODO: Fix this bug
-  @VimBehaviorDiffers(originalVimAfter =
-    """
-      |Lorem Ipsum
-      |
-      |Lorem ipsum dolor sit amet,
-      |consectetur ${s}adipiscing elit.......${c}.${se}
-      |Sed in orci mauris.
-      |Cras id tellus in ex imperdiet egestas.
-    """,
-    description = "Caret placement is incorrect, but the selection is correct - it should not select the final newline char"
-  )
   @Test
   fun `test repeated text object expands selection to whitespace at end of line`() {
     doTest(
@@ -449,7 +543,7 @@ class MotionInnerBigWordActionTest : VimTestCase() {
         |Lorem Ipsum
         |
         |Lorem ipsum dolor sit amet,
-        |consectetur ${s}adipiscing elit........${c}${se}
+        |consectetur ${s}adipiscing elit.......${c}.${se}
         |Sed in orci mauris.
         |Cras id tellus in ex imperdiet egestas.
       """.trimMargin().dotToSpace(),
@@ -576,25 +670,14 @@ class MotionInnerBigWordActionTest : VimTestCase() {
       """.trimMargin(),
       """
         |Lorem ${s}Ipsum
-        |
         |${c}${se}
+        |
         |Lorem ipsum dolor sit amet,
       """.trimMargin(),
       Mode.VISUAL(SelectionType.CHARACTER_WISE),
     )
   }
 
-  @VimBehaviorDiffers(originalVimAfter =
-    """
-      |Lorem ${s}Ipsum
-      |.......${c}.${se}
-      |Lorem ipsum dolor sit amet,
-      |consectetur adipiscing elit
-      |Sed in orci mauris.
-      |Cras id tellus in ex imperdiet egestas.
-    """,
-    description = "Caret placement is incorrect, but selection is correct. It should not select trailing new line char"
-  )
   @Test
   fun `test repeated text object expands to whitespace on following blank line`() {
     doTest(
@@ -609,7 +692,7 @@ class MotionInnerBigWordActionTest : VimTestCase() {
       """.trimMargin().dotToSpace(),
       """
         |Lorem ${s}Ipsum
-        |........${c}${se}
+        |.......${c}.${se}
         |Lorem ipsum dolor sit amet,
         |consectetur adipiscing elit
         |Sed in orci mauris.
@@ -652,8 +735,8 @@ class MotionInnerBigWordActionTest : VimTestCase() {
       """
         |Lorem ${s}Ipsum
         |
-        |........
-        |${c}${se}
+        |.......${c}.${se}
+        |
         |Lorem ipsum dolor sit amet,
         |consectetur adipiscing elit
         |Sed in orci mauris.
diff --git a/src/test/java/org/jetbrains/plugins/ideavim/action/motion/object/MotionInnerWordActionTest.kt b/src/test/java/org/jetbrains/plugins/ideavim/action/motion/object/MotionInnerWordActionTest.kt
index 6a2c2ceda..81b6d4567 100644
--- a/src/test/java/org/jetbrains/plugins/ideavim/action/motion/object/MotionInnerWordActionTest.kt
+++ b/src/test/java/org/jetbrains/plugins/ideavim/action/motion/object/MotionInnerWordActionTest.kt
@@ -124,6 +124,54 @@ class MotionInnerWordActionTest : VimTestCase() {
     )
   }
 
+  @Test
+  fun `test select word from whitespace at end of line with multiple lines`() {
+    doTest(
+      "viw",
+      """
+        |Lorem Ipsum....${c}....
+        |
+        |Lorem ipsum dolor sit amet
+        |consectetur adipiscing elit
+        |Sed in orci mauris.
+        |Cras id tellus in ex imperdiet egestas.
+      """.trimMargin().dotToSpace(),
+      """
+        |Lorem Ipsum${s}.......${c}.${se}
+        |
+        |Lorem ipsum dolor sit amet
+        |consectetur adipiscing elit
+        |Sed in orci mauris.
+        |Cras id tellus in ex imperdiet egestas.
+      """.trimMargin().dotToSpace(),
+      Mode.VISUAL(SelectionType.CHARACTER_WISE),
+    )
+  }
+
+  @Test
+  fun `test select word from whitespace at end of line with multiple lines 2`() {
+    doTest(
+      "viw",
+      """
+        |Lorem Ipsum
+        |
+        |Lorem ipsum dolor sit amet....${c}....
+        |....consectetur adipiscing elit
+        |Sed in orci mauris.
+        |Cras id tellus in ex imperdiet egestas.
+      """.trimMargin().dotToSpace(),
+      """
+        |Lorem Ipsum
+        |
+        |Lorem ipsum dolor sit amet${s}.......${c}.${se}
+        |....consectetur adipiscing elit
+        |Sed in orci mauris.
+        |Cras id tellus in ex imperdiet egestas.
+      """.trimMargin().dotToSpace(),
+      Mode.VISUAL(SelectionType.CHARACTER_WISE),
+    )
+  }
+
   @Test
   fun `test select word selects up to punctuation`() {
     doTest(
@@ -154,6 +202,64 @@ class MotionInnerWordActionTest : VimTestCase() {
     )
   }
 
+  @Test
+  fun `test select word with existing left-to-right selection in whitespace selects trailing whitespace at end of file`() {
+    doTest(
+      listOf("v", "l", "iw"),
+      "Lorem ipsum dolor sit amet  ${c}      ",
+      "Lorem ipsum dolor sit amet  ${s}     ${c} ${se}",
+      Mode.VISUAL(SelectionType.CHARACTER_WISE),
+    )
+  }
+
+  @Test
+  fun `test select word from whitespace at end of line with multiple lines and existing left-to-right selection`() {
+    doTest(
+      listOf("v", "h", "iw"),
+      """
+        |Lorem Ipsum...${c}.....
+        |
+        |Lorem ipsum dolor sit amet
+        |consectetur adipiscing elit
+        |Sed in orci mauris.
+        |Cras id tellus in ex imperdiet egestas.
+      """.trimMargin().dotToSpace(),
+      """
+        |Lorem Ipsum${s}${c}....${se}....
+        |
+        |Lorem ipsum dolor sit amet
+        |consectetur adipiscing elit
+        |Sed in orci mauris.
+        |Cras id tellus in ex imperdiet egestas.
+      """.trimMargin().dotToSpace(),
+      Mode.VISUAL(SelectionType.CHARACTER_WISE),
+    )
+  }
+
+  @Test
+  fun `test select word from whitespace at end of line with multiple lines and existing left-to-right selection 2`() {
+    doTest(
+      listOf("v", "h", "iw"),
+      """
+        |Lorem Ipsum
+        |
+        |Lorem ipsum dolor sit amet...${c}.....
+        |    consectetur adipiscing elit
+        |Sed in orci mauris.
+        |Cras id tellus in ex imperdiet egestas.
+      """.trimMargin().dotToSpace(),
+      """
+        |Lorem Ipsum
+        |
+        |Lorem ipsum dolor sit amet${s}${c}....${se}....
+        |    consectetur adipiscing elit
+        |Sed in orci mauris.
+        |Cras id tellus in ex imperdiet egestas.
+      """.trimMargin().dotToSpace(),
+      Mode.VISUAL(SelectionType.CHARACTER_WISE),
+    )
+  }
+
   @Test
   fun `test select word with existing right-to-left selection selects start of word`() {
     doTest(
@@ -421,18 +527,6 @@ class MotionInnerWordActionTest : VimTestCase() {
     )
   }
 
-  // TODO: Fix this bug
-  @VimBehaviorDiffers(originalVimAfter =
-    """
-      |Lorem Ipsum
-      |
-      |Lorem ipsum dolor sit amet,
-      |consectetur ${s}adipiscing elit.......${c}.${se}
-      |Sed in orci mauris.
-      |Cras id tellus in ex imperdiet egestas.
-    """,
-    description = "Caret placement is incorrect, but the selection is correct - it should not select the final newline char"
-  )
   @Test
   fun `test repeated text object expands selection to whitespace at end of line`() {
     doTest(
@@ -449,7 +543,7 @@ class MotionInnerWordActionTest : VimTestCase() {
         |Lorem Ipsum
         |
         |Lorem ipsum dolor sit amet,
-        |consectetur ${s}adipiscing elit........${c}${se}
+        |consectetur ${s}adipiscing elit.......${c}.${se}
         |Sed in orci mauris.
         |Cras id tellus in ex imperdiet egestas.
       """.trimMargin().dotToSpace(),
@@ -576,25 +670,14 @@ class MotionInnerWordActionTest : VimTestCase() {
       """.trimMargin(),
       """
         |Lorem ${s}Ipsum
-        |
         |${c}${se}
+        |
         |Lorem ipsum dolor sit amet,
       """.trimMargin(),
       Mode.VISUAL(SelectionType.CHARACTER_WISE),
     )
   }
 
-  @VimBehaviorDiffers(originalVimAfter =
-    """
-      |Lorem ${s}Ipsum
-      |.......${c}.${se}
-      |Lorem ipsum dolor sit amet,
-      |consectetur adipiscing elit
-      |Sed in orci mauris.
-      |Cras id tellus in ex imperdiet egestas.
-    """,
-    description = "Caret placement is incorrect, but selection is correct. It should not select trailing new line char"
-  )
   @Test
   fun `test repeated text object expands to whitespace on following blank line`() {
     doTest(
@@ -609,7 +692,7 @@ class MotionInnerWordActionTest : VimTestCase() {
       """.trimMargin().dotToSpace(),
       """
         |Lorem ${s}Ipsum
-        |........${c}${se}
+        |.......${c}.${se}
         |Lorem ipsum dolor sit amet,
         |consectetur adipiscing elit
         |Sed in orci mauris.
@@ -652,8 +735,8 @@ class MotionInnerWordActionTest : VimTestCase() {
       """
         |Lorem ${s}Ipsum
         |
-        |........
-        |${c}${se}
+        |.......${c}.${se}
+        |
         |Lorem ipsum dolor sit amet,
         |consectetur adipiscing elit
         |Sed in orci mauris.
diff --git a/vim-engine/src/main/kotlin/com/maddyhome/idea/vim/api/VimSearchHelperBase.kt b/vim-engine/src/main/kotlin/com/maddyhome/idea/vim/api/VimSearchHelperBase.kt
index aabe7698f..3ba2b0f75 100644
--- a/vim-engine/src/main/kotlin/com/maddyhome/idea/vim/api/VimSearchHelperBase.kt
+++ b/vim-engine/src/main/kotlin/com/maddyhome/idea/vim/api/VimSearchHelperBase.kt
@@ -421,9 +421,11 @@ abstract class VimSearchHelperBase : VimSearchHelper {
           res = pos
         }
         found = true
-      }
-      else if (newChar == '\n' && newChar == lastChar) {
-        res = if (step < 0) pos + 1 else pos
+      } else if (newChar == '\n'
+        && (newChar == lastChar
+          || (spaceWords && charType(editor, lastChar, bigWord) === CharacterHelper.CharacterType.WHITESPACE))
+      ) {
+        res = if (step < 0) pos + 1 else pos - 1
         found = true
       }
       lastChar = newChar