Index: src/java/org/apache/fop/layoutmgr/AbstractBreaker.java
===================================================================
--- src/java/org/apache/fop/layoutmgr/AbstractBreaker.java	(revision 829691)
+++ src/java/org/apache/fop/layoutmgr/AbstractBreaker.java	(working copy)
@@ -217,6 +217,10 @@
         return true;
     }
 
+    protected boolean isFootnoteHandlingActivated() {
+        return true;
+    }
+
     /**
      * @return true if one a single part should be produced if possible (ex. for block-containers)
      */
@@ -353,7 +357,8 @@
                 PageBreakingAlgorithm alg = new PageBreakingAlgorithm(getTopLevelLM(),
                         getPageProvider(), createLayoutListener(),
                         alignment, alignmentLast, footnoteSeparatorLength,
-                        isPartOverflowRecoveryActivated(), autoHeight, isSinglePartFavored());
+                        isPartOverflowRecoveryActivated(), autoHeight, isSinglePartFavored(),
+                        isFootnoteHandlingActivated());
 
                 BlockSequence effectiveList;
                 if (getCurrentDisplayAlign() == Constants.EN_X_FILL) {
Index: src/java/org/apache/fop/layoutmgr/BalancingColumnBreakingAlgorithm.java
===================================================================
--- src/java/org/apache/fop/layoutmgr/BalancingColumnBreakingAlgorithm.java	(revision 829691)
+++ src/java/org/apache/fop/layoutmgr/BalancingColumnBreakingAlgorithm.java	(working copy)
@@ -44,7 +44,7 @@
             int columnCount) {
         super(topLevelLM, pageProvider, layoutListener,
                 alignment, alignmentLast,
-                footnoteSeparatorLength, partOverflowRecovery, false, false);
+                footnoteSeparatorLength, partOverflowRecovery, false, false, true);
         this.columnCount = columnCount;
         this.considerTooShort = true; //This is important!
     }
Index: src/java/org/apache/fop/layoutmgr/BlockContainerLayoutManager.java
===================================================================
--- src/java/org/apache/fop/layoutmgr/BlockContainerLayoutManager.java	(revision 829691)
+++ src/java/org/apache/fop/layoutmgr/BlockContainerLayoutManager.java	(working copy)
@@ -39,6 +39,7 @@
 import org.apache.fop.fo.flow.BlockContainer;
 import org.apache.fop.fo.properties.CommonAbsolutePosition;
 import org.apache.fop.fo.properties.KeepProperty;
+import org.apache.fop.layoutmgr.inline.KnuthInlineBox;
 import org.apache.fop.traits.MinOptMax;
 import org.apache.fop.traits.SpaceVal;
 import org.apache.fop.util.ListUtil;
@@ -828,8 +829,22 @@
         }
         List returnList = new LinkedList();
         if (!breaker.isEmpty()) {
+
+            List footnoteList = new LinkedList();
+
+            ListIterator elementIterator = breaker.deferredOriginalList.listIterator();
+            while (elementIterator.hasNext()) {
+                KnuthElement element = (KnuthElement) elementIterator.next();
+                if (element instanceof KnuthInlineBox
+                        && ((KnuthInlineBox) element).isAnchor()) {
+                    footnoteList.add(((KnuthInlineBox) element).getFootnoteBodyLM());
+                } else if (element instanceof KnuthBlockBox) {
+                    footnoteList.addAll(((KnuthBlockBox) element).getFootnoteBodyLMs());
+                }
+            }
+
             Position bcPosition = new BlockContainerPosition(this, breaker);
-            returnList.add(new KnuthBox(0, notifyPos(bcPosition), false));
+            returnList.add(new KnuthBlockBox(0, footnoteList, notifyPos(bcPosition), false));
 
             //TODO Maybe check for page overflow when autoHeight=true
             if (!autoHeight & (contentOverflows)) {
@@ -888,6 +903,10 @@
             this.ipd = ipd;
         }
 
+        protected boolean isFootnoteHandlingActivated() {
+            return false;
+        }
+
         /** {@inheritDoc} */
         protected void observeElementList(List elementList) {
             ElementListObserver.observe(elementList, "block-container",
Index: src/java/org/apache/fop/layoutmgr/PageBreaker.java
===================================================================
--- src/java/org/apache/fop/layoutmgr/PageBreaker.java	(revision 829691)
+++ src/java/org/apache/fop/layoutmgr/PageBreaker.java	(working copy)
@@ -374,7 +374,8 @@
                     getTopLevelLM(), getPageProvider(), createLayoutListener(),
                     alg.getAlignment(), alg.getAlignmentLast(),
                     footnoteSeparatorLength,
-                    isPartOverflowRecoveryActivated(), false, false);
+                    isPartOverflowRecoveryActivated(), false, false,
+                    isFootnoteHandlingActivated());
             AbstractBreaker.log.debug("===================================================");
         }
 
Index: src/java/org/apache/fop/layoutmgr/PageBreakingAlgorithm.java
===================================================================
--- src/java/org/apache/fop/layoutmgr/PageBreakingAlgorithm.java	(revision 829691)
+++ src/java/org/apache/fop/layoutmgr/PageBreakingAlgorithm.java	(working copy)
@@ -103,6 +103,7 @@
     private int currentKeepContext = Constants.EN_AUTO;
     private KnuthNode lastBeforeKeepContextSwitch;
 
+    private boolean footnoteHandlingActivated;
 
     public PageBreakingAlgorithm(LayoutManager topLevelLM,
                                  PageProvider pageProvider,
@@ -110,7 +111,8 @@
                                  int alignment, int alignmentLast,
                                  MinOptMax footnoteSeparatorLength,
                                  boolean partOverflowRecovery, boolean autoHeight,
-                                 boolean favorSinglePart) {
+                                 boolean favorSinglePart,
+                                 boolean footnoteHandlingActivated) {
         super(alignment, alignmentLast, true, partOverflowRecovery, 0);
         this.topLevelLM = topLevelLM;
         this.pageProvider = pageProvider;
@@ -123,6 +125,7 @@
         }
         this.autoHeight = autoHeight;
         this.favorSinglePart = favorSinglePart;
+        this.footnoteHandlingActivated = footnoteHandlingActivated;
     }
 
     /**
@@ -293,11 +296,12 @@
      * {@inheritDoc}
      * Page-breaking specific handling of the given box. Currently it adds the footnotes
      * cited in the given box to the list of to-be-handled footnotes.
-     * @param box a block-level element possibly containing foonotes citations
+     * @param box a block-level element possibly containing footnotes citations
      */
     protected void handleBox(KnuthBox box) {
         super.handleBox(box);
-        if (box instanceof KnuthBlockBox
+        if (this.footnoteHandlingActivated 
+            && box instanceof KnuthBlockBox
             && ((KnuthBlockBox) box).hasAnchors()) {
             handleFootnotes(((KnuthBlockBox) box).getElementLists());
             if (!newFootnotes) {
