Index: wp-includes/default-filters.php
===================================================================
--- wp-includes/default-filters.php	(revision 7392)
+++ wp-includes/default-filters.php	(working copy)
@@ -69,10 +69,11 @@
 }
 
 // Places to balance tags on input
-$filters = array('content_save_pre', 'excerpt_save_pre', 'comment_save_pre', 'pre_comment_content');
+$filters = array('excerpt_save_pre', 'comment_save_pre', 'pre_comment_content');
 foreach ( $filters as $filter ) {
 	add_filter( $filter, 'balanceTags', 50);
 }
+add_filter( 'content_save_pre', 'balanceTagsWithPages', 50 );
 
 // Format strings for display.
 $filters = array('comment_author', 'term_name', 'link_name', 'link_description',
Index: wp-includes/post.php
===================================================================
--- wp-includes/post.php	(revision 7392)
+++ wp-includes/post.php	(working copy)
@@ -124,20 +124,44 @@
  * @param string $post {@internal Missing Description}}
  * @return array {@internal Missing Description}}
  */
-function get_extended($post) {
+function get_extended($post, $strip_whitespace = true) {
 	//Match the new style more links
 	if ( preg_match('/<!--more(.*?)?-->/', $post, $matches) ) {
 		list($main, $extended) = explode($matches[0], $post, 2);
+		$delim = '<!--more' . $matches[1] . '-->';
 	} else {
 		$main = $post;
 		$extended = '';
+		$delim = '';
 	}
 
 	// Strip leading and trailing whitespace
-	$main = preg_replace('/^[\s]*(.*)[\s]*$/', '\\1', $main);
-	$extended = preg_replace('/^[\s]*(.*)[\s]*$/', '\\1', $extended);
+	if ( $strip_whitespace ) {
+		$main = preg_replace('/^[\s]*(.*)[\s]*$/', '\\1', $main);
+		$extended = preg_replace('/^[\s]*(.*)[\s]*$/', '\\1', $extended);
+	}
+	
+	return array('main' => $main, 'extended' => $extended, 'delimiter' => $delim);
+}
 
-	return array('main' => $main, 'extended' => $extended);
+/**
+ * split_nextpage() - split post text into pages separated by <!--nextpage-->
+ *
+ * {@internal Missing Long Description}}
+ *
+ * @package WordPress
+ * @subpackage Post
+ * @since 2.5
+ *
+ * @param string $post {@internal Missing Description}}
+ * @return array {@internal Missing Description}}
+ */
+function split_nextpage($text, $include_delim = false) {
+	$flags = 0;
+	if ( $include_delim )
+		$flags = PREG_SPLIT_DELIM_CAPTURE;
+
+	return preg_split('/(<!--nextpage-->)/', $text, -1, $flags);
 }
 
 /**
Index: wp-includes/formatting.php
===================================================================
--- wp-includes/formatting.php	(revision 7392)
+++ wp-includes/formatting.php	(working copy)
@@ -436,6 +436,25 @@
 	return force_balance_tags( $text );
 }
 
+// like balanceTags, but separately balance each portion (as split by the more and nextpage tags)
+function balanceTagsWithPages( $text, $force = false ) {
+	if ( !$force && get_option('use_balanceTags') == 0 )
+		return $text;
+
+	$parts = get_extended( $text, false );
+
+	$slices = split_nextpage( $parts['main'], true );
+	if ( $parts['delimiter'] )
+		$slices[] = $parts['delimiter'];
+	$slices = array_merge( $slices, split_nextpage( $parts['extended'], true ) );
+
+	$out = '';
+	foreach ( $slices as $slice )
+		$out .= force_balance_tags($slice);
+
+	return $out;
+}
+
 /*
  force_balance_tags
 

