diff --git a/ChangeLog b/ChangeLog
index 3ad8e0382649f2328eb88baa967d8c2876f81b84..afb6e216f729b9d822b6f59394ac3c1cc622f92d 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -24,10 +24,14 @@ CVS code -
 	  command is Meta-] (hope you dont mind since I already sold off
 	  Meta-O to the MacOS file code Ken...) Fixes to bracket_msg
 	  by DLR.
+	- Call do_gotopos from do_alt_spell() to keep position
+	  consistent when invoking alt speller (DLR).
 - files.c:
   do_writeout()
 	- Expanded strings to not use %s and ?: to determine
 	  write/append string to be nice to translators.
+  new_file()
+	- Initialize totsize (DLR).
 - nano.c:
   main()
 	- Added vars oldcurrent and oldcurrent_x to check whether cursor
diff --git a/config.h.in b/config.h.in
index 7fcb8da22dbb99fcf7454829ffd99851f4240d61..02ba1537cee5270db11b3f348f51d9db07b6e346 100644
--- a/config.h.in
+++ b/config.h.in
@@ -1,4 +1,4 @@
-/* config.h.in.  Generated automatically from configure.in by autoheader.  */
+/* config.h.in.  Generated automatically from configure.in by autoheader 2.13.  */
 
 /* Define if using alloca.c.  */
 #undef C_ALLOCA
diff --git a/files.c b/files.c
index a2e5d08d2ead61ff81ef011f1055997d001e1399..fdc752be414504c7ebe411fb1a3064a9e9ccbb2e 100644
--- a/files.c
+++ b/files.c
@@ -78,6 +78,7 @@ void new_file(void)
     editbot = fileage;
     current = fileage;
     totlines = 1;
+    totsize = 0;
 
 #ifdef ENABLE_MULTIBUFFER
     /* if there aren't any entries in open_files, create the entry for
diff --git a/nano.c b/nano.c
index fa6f9b8aa50bc144c8af8979fb89c6dec4019648..fb064d40974be79633b6adbf7445fdf9db85670c 100644
--- a/nano.c
+++ b/nano.c
@@ -1526,7 +1526,7 @@ int do_int_speller(char *tempfile_name)
 /* External spell checking */
 int do_alt_speller(char *file_name)
 {
-    int alt_spell_status, y_cur = current_y;
+    int alt_spell_status, x_cur = current_x, y_cur = current_y, pww_cur = placewewant;
     pid_t pid_spell;
     char *ptr;
     long lineno_cur = current->lineno;
@@ -1579,10 +1579,9 @@ int do_alt_speller(char *file_name)
     global_init(1);
     open_file(file_name, 0, 1);
 
-    /* go back to the old line while keeping the same position, mark the
-       file as modified, and make sure that the titlebar is refreshed */
-    current_y = y_cur;
-    do_gotoline(lineno_cur, 1);
+    /* go back to the old position, mark the file as modified, and make
+       sure that the titlebar is refreshed */
+    do_gotopos(lineno_cur, x_cur, y_cur, pww_cur);
     set_modified();
     clearok(topwin, FALSE);
     titlebar(NULL);
diff --git a/proto.h b/proto.h
index 955870eb671138302e9a076b9c9672d9c627750c..f972b7d67a576f5bebaf0e03115dae092bb200d4 100644
--- a/proto.h
+++ b/proto.h
@@ -113,7 +113,7 @@ int do_replace_loop(char *prevanswer, filestruct *begin, int *beginx,
 			int wholewords, int *i);
 int do_find_bracket(void);
 
-#ifdef ENABLE_MULTIBUFFER
+#if defined (ENABLE_MULTIBUFFER) || !defined (DISABLE_SPELLER)
 void do_gotopos(long line, int pos_x, int pos_y, int pos_placewewant);
 #endif
 
diff --git a/search.c b/search.c
index 6fab9312dd84960cfde474fed11c3c9b288bbb63..cdf21e6837c4e4967041051fafa0855b694e3e4f 100644
--- a/search.c
+++ b/search.c
@@ -806,7 +806,7 @@ int do_gotoline_void(void)
     return do_gotoline(0, 0);
 }
 
-#ifdef ENABLE_MULTIBUFFER
+#if (defined ENABLE_MULTIBUFFER || !defined DISABLE_SPELLER)
 void do_gotopos(long line, int pos_x, int pos_y, int pos_placewewant)
 {