diff -Naur --exclude Makefile --exclude info wfdb-10.4.16/app/xform.c wfdb-10.4.17/app/xform.c
--- wfdb-10.4.16/app/xform.c	2009-01-15 11:57:27.000000000 -0500
+++ wfdb-10.4.17/app/xform.c	2009-03-04 14:12:08.000000000 -0500
@@ -1,6 +1,5 @@
 /* file: xform.c	G. Moody        8 December 1983
-			Last revised:   7 January 2009
-
+			Last revised:    4 March 2009
 -------------------------------------------------------------------------------
 xform: Sampling frequency, amplitude, and format conversion for WFDB records
 Copyright (C) 1983-2009 George B. Moody
@@ -401,7 +400,7 @@
 			      format);
 		(void)fgets(answer, sizeof(answer), ttyin);
 		(void)sscanf(answer, "%d", &format);
-		for (i = 0; i < WFDB_NFMTS; i++)
+		for (i = 1; i < WFDB_NFMTS; i++) /* skip format[0] (= 0) */
 		    if (format == formats[i]) break;
 	    } while (i >= WFDB_NFMTS);
 	    if (nosig > 1) {
@@ -587,7 +586,7 @@
 	exit(2);
     (void)fprintf(stderr, " done\n");
 
-    /* If an output record was specified using `-o', check that the output
+     /* If an output record was specified using `-o', check that the output
        signals are writable.  Suppress warning messages about possible
        sampling frequency differences. */
     wfdbquiet();
@@ -597,7 +596,19 @@
     }
     wfdbverbose();
 
-    /* If the `-n' option was specified, copy the signal descriptions from the
+    /* Make sure that signal file format is not 0 (putvec cannot write to
+       a null record). */
+    for (i = 0; i < nosig; i++) {
+	if (dfout[i].fmt == 0) {
+	    (void)fprintf(stderr, "%s: signal %d format cannot be 0"
+			  " (changing to format 16)\n", pname, i);
+	    dfout[i].fmt = 16;
+	    reopen = 1;	/* record must be (re)opened using osigfopen to make
+			   the change effective */
+	}
+    }
+
+   /* If the `-n' option was specified, copy the signal descriptions from the
        input record header file into the WFDB_Siginfo structures for the output
        record (for eventual storage in the new output header file).  To make
        the changes effective, the output signals must be (re)opened using
diff -Naur --exclude Makefile --exclude info wfdb-10.4.16/doc/wpg-src/wpg0.tex wfdb-10.4.17/doc/wpg-src/wpg0.tex
--- wfdb-10.4.16/doc/wpg-src/wpg0.tex	2009-02-26 19:59:46.000000000 -0500
+++ wfdb-10.4.17/doc/wpg-src/wpg0.tex	2009-03-03 12:52:08.000000000 -0500
@@ -510,6 +510,17 @@
 WFDB Software Package distribution, for information on any more recent
 changes that may not be described here.
 
+@unnumberedsubsec Changes in version 10.4.17
+
+Internal WFDB library function @code{wfdb_checkname} now allows hyphens
+(@code{-}) within record and annotator names.
+
+@unnumberedsubsec Changes in version 10.4.16
+
+WFDB library function @code{strtim} now rounds rather than truncating when
+the sampling frequency is not an integer.
+
+
 @unnumberedsubsec Changes in version 10.4.15
 
 WFDB library function @code{mstimstr} now outputs time to the nearest
diff -Naur --exclude Makefile --exclude info wfdb-10.4.16/lib/signal.c wfdb-10.4.17/lib/signal.c
--- wfdb-10.4.16/lib/signal.c	2009-03-01 15:45:39.000000000 -0500
+++ wfdb-10.4.17/lib/signal.c	2009-03-04 12:46:25.000000000 -0500
@@ -1,5 +1,5 @@
 /* file: signal.c	G. Moody	13 April 1989
-			Last revised:   26 February 2009	wfdblib 10.4.15
+			Last revised:    4 March 2009	wfdblib 10.4.17
 WFDB library functions for signals
 
 _______________________________________________________________________________
@@ -580,7 +580,7 @@
     return (0);
 }
 
-static void sigmap(WFDB_Sample *vector)
+static int sigmap(WFDB_Sample *vector)
 {
     int i;
     double v;
@@ -600,6 +600,7 @@
 #endif
       }
     }
+    return (tspf);
 }
 
 /* end of code for handling variable-layout records */
@@ -785,7 +786,7 @@
 	    hsd[0]->info.spf = 1;
 	    hsd[0]->info.fmt = 0;
 	    hsd[0]->info.nsamp = nsamples = segp->nsamp;
-	    return (1);	       
+	    return (maxhsig = 1);	       
 	}
 	return (0);
     }
@@ -2377,7 +2378,7 @@
     else		/* no deskewing necessary */
 	stat = getskewedframe(vector);
     if (need_sigmap && stat > 0)
-	sigmap(vector);
+	stat = sigmap(vector);
     istime++;
     return (stat);
 }
diff -Naur --exclude Makefile --exclude info wfdb-10.4.16/lib/wfdb.h wfdb-10.4.17/lib/wfdb.h
--- wfdb-10.4.16/lib/wfdb.h	2009-03-03 07:27:43.000000000 -0500
+++ wfdb-10.4.17/lib/wfdb.h	2009-03-05 06:44:39.000000000 -0500
@@ -33,7 +33,7 @@
 /* WFDB library version. */
 #define WFDB_MAJOR   10
 #define WFDB_MINOR   4
-#define WFDB_RELEASE 16
+#define WFDB_RELEASE 17
 #define WFDB_NETFILES 1	/* if 1, library includes code for HTTP, FTP clients */
 #define WFDB_NETFILES_LIBCURL 1
 
diff -Naur --exclude Makefile --exclude info wfdb-10.4.16/lib/wfdbio.c wfdb-10.4.17/lib/wfdbio.c
--- wfdb-10.4.16/lib/wfdbio.c	2009-02-18 12:43:50.000000000 -0500
+++ wfdb-10.4.17/lib/wfdbio.c	2009-03-03 12:49:16.000000000 -0500
@@ -1,5 +1,5 @@
 /* file: wfdbio.c	G. Moody	18 November 1988
-                        Last revised:	18 February 2009       wfdblib 10.4.14
+                        Last revised:	  3 March 2009       wfdblib 10.4.17
 Low-level I/O functions for the WFDB library
 
 _______________________________________________________________________________
@@ -949,13 +949,14 @@
 }
 
 /* wfdb_checkname checks record and annotator names -- they must not be empty,
-   and they must contain only letters, digits, tildes, underscores, and
+   and they must contain only letters, digits, hyphens, tildes, underscores, and
    directory separators. */
 
 int wfdb_checkname(char *p, char *s)
 {
     do {
-	if (('0' <= *p && *p <= '9') || *p == '_' || *p == '~' || *p == DSEP ||
+	if (('0' <= *p && *p <= '9') || *p == '_' || *p == '~' || *p== '-' ||
+	    *p == DSEP ||
 #ifdef MSDOS
 	    *p == ':' ||
 #endif
diff -Naur --exclude Makefile --exclude info wfdb-10.4.16/NEWS wfdb-10.4.17/NEWS
--- wfdb-10.4.16/NEWS	2009-03-03 12:01:38.000000000 -0500
+++ wfdb-10.4.17/NEWS	2009-03-05 07:10:48.000000000 -0500
@@ -1,3 +1,10 @@
+10.4.17:
+	Internal WFDB library function wfdb_checkname() now allows hyphens
+	(-) within record and annotator names.
+
+	WFDB applications xform and wfdb2mat now properly handle variable-layout
+	multisegment input records.
+
 10.4.16:
 	WFDB library function strtim() now rounds rather than truncating when
 	the sampling frequency is not an integer.
@@ -6,7 +13,7 @@
 	and no longer requires the tab character preceding an aux string to
 	occur in a specific column as did earlier versions.
 
-	Bug fixes in convert/wfdbtomat.
+	Bug fixes in convert/wfdb2mat.
 
 10.4.15:
 	WFDB library function mstimstr() now outputs time to the nearest
