updated for version 7.0038
diff --git a/src/ex_docmd.c b/src/ex_docmd.c
index 0bcd69e..48edb2e 100644
--- a/src/ex_docmd.c
+++ b/src/ex_docmd.c
@@ -8084,6 +8084,13 @@
 ex_startinsert(eap)
     exarg_T	*eap;
 {
+    if (eap->forceit)
+    {
+	coladvance((colnr_T)MAXCOL);
+	curwin->w_curswant = MAXCOL;
+	curwin->w_set_curswant = FALSE;
+    }
+
     /* Ignore the command when already in Insert mode.  Inserting an
      * expression register that invokes a function can do this. */
     if (State & INSERT)
@@ -8091,9 +8098,6 @@
 
     if (eap->forceit)
     {
-	coladvance((colnr_T)MAXCOL);
-	curwin->w_curswant = MAXCOL;
-	curwin->w_set_curswant = FALSE;
 	if (eap->cmdidx == CMD_startinsert)
 	    restart_edit = 'a';
 	else