diff --git a/pykat/finesse.py b/pykat/finesse.py
index ae1214e4b5b50fe3bb19ea435a6a87c8df260bc4..bb748311544b120754ba3011c47d01c802195a89 100644
--- a/pykat/finesse.py
+++ b/pykat/finesse.py
@@ -805,22 +805,12 @@ class kat(object):
                     if fragment in obj:
                         print "  ** removing line '{0}'".format(obj)
                         objs.remove(obj)
-        
+
+                    
     def generateKatScript(self) :
         """ Generates the kat file which can then be run """
-        
-        out = []    
-        import datetime
-        strtoday = datetime.datetime.now()
-        out.append(strtoday.strftime("%% Generated by PyKat %d.%m.%Y %H:%M:%S\n") )
-
-        for key in self.__blocks:
-            objs = self.__blocks[key].contents
 
-            out.append("\n")
-            if key != NO_BLOCK and np.size(objs)>0:
-                out.append("%%% FTblock " + key + "\n")
-            
+        def writeBlock():
             for obj in objs:
                 if isinstance(obj, str):
                     out.append(obj + '\n')
@@ -835,9 +825,33 @@ class kat(object):
                         else:
                             out.append(txt + "\n")
 
-            if key != NO_BLOCK and np.size(objs)>0:
-                out.append("%%% FTend " + key + "\n")
-            
+        
+        out = []    
+        import datetime
+        strtoday = datetime.datetime.now()
+        out.append(strtoday.strftime("%% Generated by PyKat %d.%m.%Y %H:%M:%S\n") )
+
+        # write the FTblocks
+        for key in self.__blocks:
+            objs = self.__blocks[key].contents
+
+            if key != NO_BLOCK:
+                if np.size(objs)>0:
+                    out.append("\n")
+                    out.append("%%% FTblock " + key + "\n")
+                    writeBlock()
+                    out.append("%%% FTend " + key + "\n")
+
+        # write the NO_BLOCK blocks
+        for key in self.__blocks:
+            objs = self.__blocks[key].contents
+
+
+            if key == NO_BLOCK:
+                if np.size(objs)>0:
+                    out.append("\n")
+                    writeBlock()
+                
         # now loop through all the nodes and get any gauss commands
         for key in self.nodes.getNodes():
             txt = self.nodes.getNodes()[key].getFinesseText()