diff --git a/ChangeLog b/ChangeLog
index a0e0d2052d13662c0f1003e31b58e3746b462772..1234eb3f4d39a67ba4983b6f0bfb89e29ea6cb19 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -71,6 +71,10 @@ CVS code -
   do_para_begin(), do_para_end()
 	- Maintain current_y's value when moving up or down lines so
 	  that smooth scrolling works correctly. (DLR)
+  breakable(), break_line()
+	- Make goal a ssize_t instead of an int, since fill is now a
+	  ssize_t, and the position at which a line is broken can be
+	  greater than COLS. (DLR)
 - nano.h:
 	- Add WIDTH_OF_TAB #define, containing the default width of a
 	  tab. (DLR)
diff --git a/configure.ac b/configure.ac
index 8862057089a496ace08fb00deb4a5f681d503277..a91ec5854763a3ab1c036318e144242c234257ca 100644
--- a/configure.ac
+++ b/configure.ac
@@ -312,8 +312,6 @@ AC_FUNC_VPRINTF
 AC_CHECK_FUNCS(getopt_long)
 
 dnl Checks for libraries.
-
-
 if eval "test x$CURSES_LIB_NAME = x"
 then
     AC_CHECK_HEADERS(curses.h ncurses.h)
@@ -349,7 +347,7 @@ fi
 
 AC_CHECK_LIB([$CURSES_LIB_NAME], use_default_colors, AC_DEFINE(HAVE_USE_DEFAULT_COLORS, 1, [Define this if your curses library has the use_default_colors command.]))
 
-dnl Parse any configure options
+dnl Parse any configure options.
 
 LIBS="$LIBS $CURSES_LIB"
 
diff --git a/src/nano.c b/src/nano.c
index a2943cea0a2359ca6d78c376af7010a38e3df49d..6941da63ef1e709dd384f9a7328c0c263c73e481 100644
--- a/src/nano.c
+++ b/src/nano.c
@@ -2137,7 +2137,7 @@ filestruct *backup_lines(filestruct *first_line, size_t par_len, size_t
 }
 
 /* Is it possible to break line at or before goal? */
-bool breakable(const char *line, int goal)
+bool breakable(const char *line, ssize_t goal)
 {
     for (; *line != '\0' && goal >= 0; line++) {
 	if (isblank(*line))
@@ -2158,14 +2158,12 @@ bool breakable(const char *line, int goal)
  * such space, and force is TRUE, then we find the first space.  Anyway,
  * we then take the last space in that group of spaces.  The terminating
  * '\0' counts as a space. */
-int break_line(const char *line, int goal, bool force)
+int break_line(const char *line, ssize_t goal, bool force)
 {
-    /* Note that we use int instead of size_t, since goal is at most
-     * COLS, the screen width, which will always be reasonably small. */
-    int space_loc = -1;
+    ssize_t space_loc = -1;
 	/* Current tentative return value.  Index of the last space we
 	 * found with short enough display width.  */
-    int cur_loc = 0;
+    ssize_t cur_loc = 0;
 	/* Current index in line. */
 
     assert(line != NULL);
@@ -2391,7 +2389,7 @@ void do_justify(bool full_justify)
 	    size_t line_len;
 	    size_t display_len;
 		/* The width of current in screen columns. */
-	    int break_pos;
+	    ssize_t break_pos;
 		/* Where we will break the line. */
 
 	    /* We'll be moving to the next line after justifying the
diff --git a/src/nano.h b/src/nano.h
index 1470278cf85ed6928eaaa558d73bc2a7bed2a8e9..b5f95040c7ff524f367df45245d74b4cd3e5b5ce 100644
--- a/src/nano.h
+++ b/src/nano.h
@@ -34,22 +34,23 @@
 #include <limits.h>
 #endif
 
-/* Macros for the flags long... */
+/* Macros for the flags long. */
 #define SET(bit) flags |= bit
 #define UNSET(bit) flags &= ~bit
 #define ISSET(bit) ((flags & bit) != 0)
 #define TOGGLE(bit) flags ^= bit
 
-/* Define charalloc as a macro rather than duplicating code */
+/* Macros for character allocation. */
 #define charalloc(howmuch) (char *)nmalloc((howmuch) * sizeof(char))
 #define charealloc(ptr, howmuch) (char *)nrealloc(ptr, (howmuch) * sizeof(char))
 #define charmove(dest, src, n) memmove(dest, src, (n) * sizeof(char))
+
 #ifdef BROKEN_REGEXEC
 #define regexec(preg, string, nmatch, pmatch, eflags) regexec_safe(preg, string, nmatch, pmatch, eflags)
 #endif
 
 #ifndef NANO_SMALL
-/* For the backup file copy ... */
+/* For the backup file copy. */
 #define COPYFILEBLOCKSIZE 1024
 #endif
 
diff --git a/src/proto.h b/src/proto.h
index ab91b640024ba46f9792b70888847c237ac60e6f..d41fa5f9a74a571aee7fc1fcce5cf2ae34e3fdea 100644
--- a/src/proto.h
+++ b/src/proto.h
@@ -344,8 +344,8 @@ bool inpar(const char *str);
 void do_para_end(void);
 filestruct *backup_lines(filestruct *first_line, size_t par_len, size_t
 	quote_len);
-bool breakable(const char *line, int goal);
-int break_line(const char *line, int goal, bool force);
+bool breakable(const char *line, ssize_t goal);
+ssize_t break_line(const char *line, ssize_t goal, bool force);
 bool do_para_search(size_t *const quote, size_t *const par);
 void do_justify(bool full_justify);
 void do_justify_void(void);