Index: XWikiWikiBaseRenderer.java
===================================================================
--- XWikiWikiBaseRenderer.java	(revision 10278)
+++ XWikiWikiBaseRenderer.java	(working copy)
@@ -22,6 +22,8 @@
 
 package com.xpn.xwiki.render;
 
+import java.util.StringTokenizer;
+
 import com.xpn.xwiki.XWiki;
 import com.xpn.xwiki.XWikiContext;
 import com.xpn.xwiki.XWikiException;
@@ -29,8 +31,6 @@
 import com.xpn.xwiki.plugin.XWikiPluginManager;
 import com.xpn.xwiki.util.Util;
 
-import java.util.StringTokenizer;
-
 public class XWikiWikiBaseRenderer implements XWikiRenderer {
     private boolean removePre = true;
     private boolean renderWiki = true;
@@ -57,15 +57,20 @@
 
     public static void makeHeading(StringBuffer stringBuffer, String level, String text,  Util util) {
 
+    	// modified 12.06.2008 (not sure if this is relevant change)
+    	Integer parsedInt = Integer.parseInt(level);
+    	Integer levelInt = Math.max((parsedInt-1), 1);
+    	// end of modification
+    	
         String anchor = makeAnchor(text, util);
         stringBuffer.append("<h");
-        stringBuffer.append(level);
+        stringBuffer.append(levelInt); // was: level
         stringBuffer.append(" id=\"");
         stringBuffer.append(anchor);
         stringBuffer.append("\" >");
         stringBuffer.append(text);
         stringBuffer.append("</h");
-        stringBuffer.append(level);
+        stringBuffer.append(levelInt); // was: level 
         stringBuffer.append(">");
     }
 
Index: filter/XWikiHeadingFilter.java
===================================================================
--- filter/XWikiHeadingFilter.java	(revision 10278)
+++ filter/XWikiHeadingFilter.java	(working copy)
@@ -78,11 +78,15 @@
         String id = null;
         String title = result.group(0);
         String level = result.group(1);
-        int level_i = (level.length() + 3) / 2;
+        // old way
+        //        int level_i = (level.length() + 3) / 2;        
+        // new way (12.06.2008 by takku)       
+        int level_i =  level.replaceAll("\\.", "").length();
         String hlevel = (level_i <= 6 ? level_i : 6) + "";
         String text = result.group(3);
         String numbering = "";
 
+        
         RenderContext rcontext = context.getRenderContext();
         XWikiContext xcontext =
             ((XWikiRadeoxRenderEngine) rcontext.getRenderEngine()).getXWikiContext();
@@ -128,6 +132,8 @@
             formatter.format(new Object[] {id, level.replaceAll("\\.", "-"), numbering, text,
                 hlevel});
 
+        log.debug("HEADING DBG: heading="+heading);
+        
         // Only show the section edit button for view action and when the user has edit rights on
         // the current document
         boolean showEditButton = false;
@@ -185,6 +191,9 @@
                     }
 
                     String url = doc.getURL("edit", editparams.toString(), xcontext);
+
+                    log.debug("HEADING DBG: returning heading (inner)="+heading);
+
                     return heading + "<span class='edit_section'>&#91;"
                         + "<a style='text-decoration: none;' title='Edit section: "
                         + text.replaceAll("'", "&#39;") + "' href='" + url + "'>" + "edit"
@@ -192,7 +201,8 @@
                 }
             }
         }
-
+        
+        log.debug("HEADING DBG: returning heading="+heading);
         return heading;
     }
 }
