diff --git a/pub/share/converters/i96-to-yda b/pub/share/converters/i96-to-yda
index 56654c518e416f40e15fc2997020d04ccd36880c..f72bc4e9321ff2d307681d1f90ef49fc63e055f0 100755
--- a/pub/share/converters/i96-to-yda
+++ b/pub/share/converters/i96-to-yda
@@ -10,9 +10,8 @@ PROGNAME = "i96-to-y96"
 class FlowSeq( list ): pass
 class FlowODict( OrderedDict ): pass
 
-def improved_dump(data, stream=None, Dumper=yaml.Dumper, **kwds):
-    class ImprovedDumper(Dumper):
-        pass
+def improved_dump(data, stream=None, **kwds):
+    class ImprovedDumper(yaml.Dumper): pass
     def odict_representer(dumper, data):
         return dumper.represent_mapping(
             yaml.resolver.BaseResolver.DEFAULT_MAPPING_TAG,
@@ -28,11 +27,11 @@ def improved_dump(data, stream=None, Dumper=yaml.Dumper, **kwds):
             data,
             flow_style=True )
     ImprovedDumper.add_representer(OrderedDict, odict_representer)
-    ImprovedDumper.add_representer(FlowSeq, flowseq_representer)
     ImprovedDumper.add_representer(FlowODict, flowodict_representer)
+    ImprovedDumper.add_representer(FlowSeq, flowseq_representer)
     return yaml.dump(data, stream, ImprovedDumper,
                      allow_unicode=True, encoding='utf-8',
-                     default_flow_style=False, indent=4, width=70, **kwds)
+                     default_flow_style=False, indent=2, width=80, **kwds)
 
 # Parse block number ib of ta, starting with line ita.
 # Return tuple ita,bh, where ita is first line of next block,
@@ -54,7 +53,7 @@ def readBlock(ib, ta, ita):
                 sys.exit(1)
             return ita+1, bh
         key = ta[ita][:ioffs].strip()
-        val = ta[ita][ioffs:].strip()
+        val = ta[ita][ioffs:]
         bh[key] = val
 
 # Print error message and terminate.
@@ -98,41 +97,46 @@ ita = 1
 ita, bh = readBlock(2, ta, ita)
 if not "fil" in bh:
     exxx("missing entry 'fil'")
-oldname = bh["fil"]
+oldname = bh["fil"].strip(' \t\r\n\0')
 
 ita, bh = readBlock(3, ta, ita)
-if not "?cu" in bh:
-    exxx("missing entry '?cu'")
-if bh["?cu"] != "0":
+if ("?cu" in bh) and (int(bh["?cu"]) != 0):
     exxx("this is not a data file, but a curve, which is currently not supported")
 
 ita, bh = readBlock(4, ta, ita)
 for key,val in bh.items():
-    rpar = OrderedDict()
-    s1 = val[:24]
-    s2 = val[24:]
-    rpar["name"] = key
-    rpar["unit"] = s1.strip()
-    rpar["val"] = float(s2.strip())
-    rpar["stdv"] = 0
-    out["RPar"].append( rpar )
+    try:
+        rpar = OrderedDict()
+        s1 = val[:24]
+        s2 = val[24:]
+        rpar["name"] = key
+        rpar["unit"] = s1.strip()
+        rpar["val"] = float(s2.strip())
+        rpar["stdv"] = 0
+        out["RPar"].append( rpar )
+    except ValueError as err:
+        exxx("Error in rpar {%s: %s}: %s" % (key, val, err))
 
 ita, bh = readBlock(5, ta, ita)
+zcoord = []
 for key,val in bh.items():
-    if key=="z2":
-        exxx("z2 not yet supported; please send input file to Joachim")
     coord = FlowODict()
     s1 = val[:24]
     s2 = val[24:]
     coord["name"] = s1.strip()
     coord["unit"] = s2.strip()
-    out["Coord"][key] = coord
+    if key[:1]=="z":
+        zcoord.append( coord )
+    else:
+        out["Coord"][key] = coord
+if len(coord)>0:
+    out["Coord"]["z"] = zcoord
 
 ita, bh = readBlock(6, ta, ita)
 for key,val in bh.items():
-    out["History"].append( key )
-    out["History"].append( "old filename: "+oldname )
-    out["History"].append( "%s-%s: converted %s.i96 -> .yda" % (PROGNAME, VERSION, stem ) )
+    out["History"].append( key.rstrip(' \t\r\n\0') )
+out["History"].append( "old filename: "+oldname )
+out["History"].append( "%s-%s: converted %s.i96 -> .yda" % (PROGNAME, VERSION, stem ) )
 
 for i in range(3):
     m = re.match(r'\(.+\)', ta[ita])