diff --git a/ANNOUNCE b/ANNOUNCE
index d9149c1..636caf0 100644
--- a/ANNOUNCE
+++ b/ANNOUNCE
@@ -1,5 +1,5 @@
 
-Libpng 1.0.6i - May 1, 2000
+Libpng 1.0.6j - May 4, 2000
 
 This is not intended to be a public release.  It will be replaced
 within a few weeks by a public version or by another test version.
@@ -43,7 +43,8 @@
 version 1.0.6h [April 24, 2000]
   Changed shared library so-number pattern from 2.x.y.z to xy.z (this builds
     libpng.so.10 & libpng.so.10.6h instead of libpng.so.2 & libpng.so.2.1.0.6h)
-version 1.0.6i [May 1, 2000]
+    This is a temporary change for test purposes.
+version 1.0.6i [May 3, 2000]
   Added documentation of user memory functions in libpng.txt/libpng.3
   Modified png_read_png so that it will use user_allocated row_pointers
     if present, unless free_me directs that it be freed, and added description
@@ -58,6 +59,11 @@
     directly instead of using png_create_*(), as authors were instructed to
     do in libpng-0.88 and earlier.
   Added makefile.intel and updated makefile.watcom (Pawel Mrochen)
+version 1.0.6j [May 4, 2000]
+  Overloaded png_read_init() and png_write_init() with macros that convert
+    calls to png_read_init_2() or png_write_init_2() that check the version
+    and structure sizes.
+  Restored original shared library so-number pattern (2.x.y.z)
 
 Send comments/corrections/commendations to
 png-implement@ccrc.wustl.edu or to randeg@alum.rpi.edu
diff --git a/CHANGES b/CHANGES
index bdbf680..b2d954f 100644
--- a/CHANGES
+++ b/CHANGES
@@ -699,7 +699,8 @@
 version 1.0.6h [April 24, 2000]
   Changed shared library so-number pattern from 2.x.y.z to xy.z (this builds
     libpng.so.10 & libpng.so.10.6h instead of libpng.so.2 & libpng.so.2.1.0.6h)
-version 1.0.6i [May 1, 2000]
+    This is a temporary change for test purposes.
+version 1.0.6i [May 2, 2000]
   Rearranged some members at the end of png_info and png_struct, to put
     unknown_chunks_num and free_me within the original size of the png_structs
     and free_me, png_read_user_fn, and png_free_fn within the original png_info,
@@ -724,6 +725,11 @@
     generate a libpng error if the modes aren't set and PNG_LEGACY_SUPPORTED
     was not defined.
   Added makefile.intel and updated makefile.watcom (Pawel Mrochen)
+version 1.0.6j [May 4, 2000]
+  Overloaded png_read_init() and png_write_init() with macros that convert
+    calls to png_read_init_2() or png_write_init_2() that check the version
+    and structure sizes.
+
 
 Send comments/corrections/commendations to
 png-implement@ccrc.wustl.edu or to randeg@alum.rpi.edu
diff --git a/INSTALL b/INSTALL
index 088e67f..b269b66 100644
--- a/INSTALL
+++ b/INSTALL
@@ -1,5 +1,5 @@
 
-Installing libpng version 1.0.6i - May 1, 2000
+Installing libpng version 1.0.6j - May 4, 2000
 
 Before installing libpng, you must first install zlib.  zlib
 can usually be found wherever you got libpng.  zlib can be
@@ -10,7 +10,7 @@
 version of zlib that's installed.
 
 You can rename the directories that you downloaded (they
-might be called "libpng-1.0.6i" or "lpng106" and "zlib-1.1.3"
+might be called "libpng-1.0.6j" or "lpng106" and "zlib-1.1.3"
 or "zlib113") so that you have directories called "zlib" and "libpng".
 
 Your directory structure should look like this:
@@ -47,8 +47,8 @@
 include
 
  makefile.std      =>  Generic UNIX makefile (cc, creates static libpng.a)
- makefile.linux    =>  Linux/ELF makefile (gcc, creates libpng.so.2.1.0.6i)
- makefile.gcmmx    =>  Linux/ELF makefile (gcc, creates libpng.so.2.1.0.6i,
+ makefile.linux    =>  Linux/ELF makefile (gcc, creates libpng.so.2.1.0.6j)
+ makefile.gcmmx    =>  Linux/ELF makefile (gcc, creates libpng.so.2.1.0.6j,
                        uses assembler code tuned for Intel MMX platform)
  makefile.gcc      =>  Generic makefile (gcc, creates static libpng.a)
  makefile.knr      =>  Archaic UNIX Makefile that converts files with
@@ -59,9 +59,9 @@
  makefile.ibmc     =>  IBM C/C++ version 3.x for Win32 and OS/2 (static)
  libpng.icc        =>  Project file for IBM VisualAge/C++ version 4.0 or later
  makefile.sgi      =>  Silicon Graphics IRIX makefile (cc, creates static lib)
- makefile.sggcc    =>  Silicon Graphics (gcc, creates libpng.so.2.1.0.6i)
+ makefile.sggcc    =>  Silicon Graphics (gcc, creates libpng.so.2.1.0.6j)
  makefile.sunos    =>  Sun makefile
- makefile.solaris  =>  Solaris 2.X makefile (gcc, creates libpng.so.2.1.0.6i)
+ makefile.solaris  =>  Solaris 2.X makefile (gcc, creates libpng.so.2.1.0.6j)
  makefile.sco      =>  For SCO OSr5  ELF and Unixware 7 with Native cc
  makefile.mips     =>  MIPS makefile
  makefile.acorn    =>  Acorn makefile
diff --git a/KNOWNBUG b/KNOWNBUG
index 6bd8d9e..07b4ab1 100644
--- a/KNOWNBUG
+++ b/KNOWNBUG
@@ -16,7 +16,7 @@
    Applications that use png_create_*() instead of png_ptr=malloc(...)
    are immune to this problem.
 
-   STATUS:  Fixed in libpng-1.0.6ad, libpng-1.0.6i, and patch-d
+   STATUS:  Fixed in libpng-1.0.6ad, libpng-1.0.6j, and patch-d
    which are currently being tested by the PNG group.
    The fix necessarily reintroduces a binary incompatibility with any
    application that makes direct access to the png_info and
@@ -41,7 +41,7 @@
    png_info structures, so libpng-1.0.6 will be patched to work around
    this problem.
 
-   STATUS:  Fixed in libpng-1.0.6g and patch-d, which are currently being
+   STATUS:  Fixed in libpng-1.0.6j and patch-d, which are currently being
    tested by the PNG group.  Users can work around the problem without
    patching libpng by recompiling their applications.
 
diff --git a/LICENSE b/LICENSE
index a904f20..0ee8fe3 100644
--- a/LICENSE
+++ b/LICENSE
@@ -5,7 +5,7 @@
 Copyright (c) 1996, 1997 Andreas Dilger
 (libpng versions 0.90, December 1996, through 0.96, May 1997)
 Copyright (c) 1998, 1999, 2000 Glenn Randers-Pehrson
-(libpng versions 0.97, January 1998, through 1.0.6i, May 1, 2000)
+(libpng versions 0.97, January 1998, through 1.0.6j, May 4, 2000)
 
 For the purposes of this copyright and license, "Contributing Authors"
 is defined as the following set of individuals:
@@ -68,4 +68,4 @@
 
 Glenn Randers-Pehrson
 randeg@alum.rpi.edu
-May 1, 2000
+May 4, 2000
diff --git a/README b/README
index d6b7d53..f2da192 100644
--- a/README
+++ b/README
@@ -1,4 +1,4 @@
-README for libpng 1.0.6i - May 1, 2000 (shared library 2.1)
+README for libpng 1.0.6j - May 4, 2000 (shared library 2.1)
 See the note about version numbers near the top of png.h
 
 See INSTALL for instructions on how to install libpng.
@@ -172,9 +172,9 @@
        descrip.mms      =>  VMS makefile for MMS or MMK
        makefile.std     =>  Generic UNIX makefile (cc, creates static libpng.a)
        makefile.linux   =>  Linux/ELF makefile
-                            (gcc, creates libpng.so.2.1.0.6i)
+                            (gcc, creates libpng.so.2.1.0.6j)
        makefile.gcmmx   =>  Linux/ELF makefile (gcc, creates
-                            libpng.so.2.1.0.6i, uses assembler code
+                            libpng.so.2.1.0.6j, uses assembler code
                             tuned for Intel MMX platform)
        makefile.gcc     =>  Generic makefile (gcc, creates static libpng.a)
        makefile.knr     =>  Archaic UNIX Makefile that converts files with
@@ -185,10 +185,10 @@
        makefile.ibmc    =>  IBM C/C++ version 3.x for Win32 and OS/2 (static)
        libpng.icc       =>  Project file, IBM VisualAge/C++ 4.0 or later
        makefile.sgi     =>  Silicon Graphics IRIX (cc, creates static lib)
-       makefile.sggcc   =>  Silicon Graphics (gcc, creates libpng.so.2.1.0.6i)
+       makefile.sggcc   =>  Silicon Graphics (gcc, creates libpng.so.2.1.0.6j)
        makefile.sunos   =>  Sun makefile
        makefile.solaris =>  Solaris 2.X makefile
-                            (gcc, creates libpng.so.2.1.0.6i)
+                            (gcc, creates libpng.so.2.1.0.6j)
        makefile.sco     =>  For SCO OSr5  ELF and Unixware 7 with Native cc
        makefile.mips    =>  MIPS makefile
        makefile.acorn   =>  Acorn makefile
diff --git a/Y2KINFO b/Y2KINFO
index f5f22f9..71f5f30 100644
--- a/Y2KINFO
+++ b/Y2KINFO
@@ -1,13 +1,13 @@
    Y2K compliance in libpng:
    =========================
 
-      May 1, 2000
+      May 4, 2000
 
       Since the PNG Development group is an ad-hoc body, we can't make
       an official declaration.
 
       This is your unofficial assurance that libpng from version 0.71 and
-      upward through 1.0.6i are Y2K compliant.  It is my belief that earlier
+      upward through 1.0.6j are Y2K compliant.  It is my belief that earlier
       versions were also Y2K compliant.
 
       Libpng only has three year fields.  One is a 2-byte unsigned integer
diff --git a/configure b/configure
index eee28bb..363ac61 100755
--- a/configure
+++ b/configure
@@ -1,5 +1,5 @@
 echo "
-  There is no \"configure\" script for Libpng-1.0.6i.  Instead, please
+  There is no \"configure\" script for Libpng-1.0.6j.  Instead, please
   copy the appropriate makefile for your system from the \"scripts\"
   directory.  Read the INSTALL file for more details.
 "
diff --git a/libpng.3 b/libpng.3
index 461e395..1d6c34b 100644
--- a/libpng.3
+++ b/libpng.3
@@ -1,6 +1,6 @@
-.TH LIBPNG 3 "May 1, 2000"
+.TH LIBPNG 3 "May 4, 2000"
 .SH NAME
-libpng \- Portable Network Graphics (PNG) Reference Library 1.0.6i
+libpng \- Portable Network Graphics (PNG) Reference Library 1.0.6j
 .SH SYNOPSIS
 \fI\fB
 
@@ -725,7 +725,7 @@
 .SH LIBPNG.TXT
 libpng.txt - A description on how to use and modify libpng
 
- libpng version 1.0.6i - May 1, 2000
+ libpng version 1.0.6j - May 4, 2000
  Updated and distributed by Glenn Randers-Pehrson
  <randeg@alum.rpi.edu>
  Copyright (c) 1998, 1999, 2000 Glenn Randers-Pehrson
@@ -3287,13 +3287,13 @@
 
 .SH VII. Y2K Compliance in libpng
 
-May 1, 2000
+May 4, 2000
 
 Since the PNG Development group is an ad-hoc body, we can't make
 an official declaration.
 
 This is your unofficial assurance that libpng from version 0.71 and
-upward through 1.0.6i are Y2K compliant.  It is my belief that earlier
+upward through 1.0.6j are Y2K compliant.  It is my belief that earlier
 versions were also Y2K compliant.
 
 Libpng only has three year fields.  One is a 2-byte unsigned integer that
@@ -3434,7 +3434,7 @@
 
 Thanks to Frank J. T. Wojcik for helping with the documentation.
 
-Libpng version 1.0.6i - May 1, 2000:
+Libpng version 1.0.6j - May 4, 2000:
 Initially created in 1995 by Guy Eric Schalnat, then of Group 42, Inc.
 Currently maintained by Glenn Randers-Pehrson (randeg@alum.rpi.edu).
 
@@ -3449,7 +3449,7 @@
 Copyright (c) 1996, 1997 Andreas Dilger
 (libpng versions 0.89c, May 1996, through 0.96, May 1997)
 Copyright (c) 1998, 1999, 2000 Glenn Randers-Pehrson
-(libpng versions 0.97, January 1998, through 1.0.6i, May 1, 2000)
+(libpng versions 0.97, January 1998, through 1.0.6j, May 4, 2000)
 
 For the purposes of this copyright and license, "Contributing Authors"
 is defined as the following set of individuals:
diff --git a/libpng.txt b/libpng.txt
index e763a3f..1739737 100644
--- a/libpng.txt
+++ b/libpng.txt
@@ -1,6 +1,6 @@
 libpng.txt - A description on how to use and modify libpng
 
- libpng version 1.0.6i - May 1, 2000
+ libpng version 1.0.6j - May 4, 2000
  Updated and distributed by Glenn Randers-Pehrson
  <randeg@alum.rpi.edu>
  Copyright (c) 1998, 1999, 2000 Glenn Randers-Pehrson
@@ -2562,13 +2562,13 @@
 
 VII. Y2K Compliance in libpng
 
-May 1, 2000
+May 4, 2000
 
 Since the PNG Development group is an ad-hoc body, we can't make
 an official declaration.
 
 This is your unofficial assurance that libpng from version 0.71 and
-upward through 1.0.6i are Y2K compliant.  It is my belief that earlier
+upward through 1.0.6j are Y2K compliant.  It is my belief that earlier
 versions were also Y2K compliant.
 
 Libpng only has three year fields.  One is a 2-byte unsigned integer that
diff --git a/libpngpf.3 b/libpngpf.3
index 66f2a11..210d504 100644
--- a/libpngpf.3
+++ b/libpngpf.3
@@ -1,6 +1,6 @@
-.TH LIBPNGPF 3 "May 1, 2000"
+.TH LIBPNGPF 3 "May 4, 2000"
 .SH NAME
-libpng \- Portable Network Graphics (PNG) Reference Library 1.0.6i
+libpng \- Portable Network Graphics (PNG) Reference Library 1.0.6j
 (private functions)
 .SH SYNOPSIS
 \fB#include <png.h>\fP
diff --git a/png.5 b/png.5
index b0f600e..5118788 100644
--- a/png.5
+++ b/png.5
@@ -1,4 +1,4 @@
-.TH PNG 5 "May 1, 2000"
+.TH PNG 5 "May 4, 2000"
 .SH NAME
 png \- Portable Network Graphics (PNG) format
 .SH DESCRIPTION
diff --git a/png.c b/png.c
index 9823edc..1daccd7 100644
--- a/png.c
+++ b/png.c
@@ -1,7 +1,7 @@
 
 /* png.c - location for general purpose libpng functions
  *
- * libpng version 1.0.6i - May 1, 2000
+ * libpng version 1.0.6j - May 4, 2000
  * Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.
  * Copyright (c) 1996, 1997 Andreas Dilger
  * Copyright (c) 1998, 1999, 2000 Glenn Randers-Pehrson
@@ -14,14 +14,14 @@
 #include "png.h"
 
 /* Generate a compiler error if there is an old png.h in the search path. */
-typedef version_1_0_6i Your_png_h_is_not_version_1_0_6i;
+typedef version_1_0_6j Your_png_h_is_not_version_1_0_6j;
 
 /* Version information for C files.  This had better match the version
  * string defined in png.h.  */
 
 #ifdef PNG_USE_GLOBAL_ARRAYS
 /* png_libpng_ver was changed to a function in version 1.0.5c */
-char png_libpng_ver[12] = "1.0.6i";
+char png_libpng_ver[12] = "1.0.6j";
 
 /* png_sig was changed to a function in version 1.0.5c */
 /* Place to hold the signature string for a PNG file. */
@@ -583,7 +583,7 @@
 png_get_copyright(png_structp png_ptr)
 {
    if (png_ptr != NULL || png_ptr == NULL)  /* silence compiler warning */
-   return ("\n libpng version 1.0.6i - May 1, 2000\n\
+   return ("\n libpng version 1.0.6j - May 4, 2000\n\
    Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.\n\
    Copyright (c) 1996, 1997 Andreas Dilger\n\
    Copyright (c) 1998, 1999, 2000 Glenn Randers-Pehrson\n");
@@ -601,8 +601,8 @@
 {
    /* Version of *.c files used when building libpng */
    if(png_ptr != NULL) /* silence compiler warning about unused png_ptr */
-      return("1.0.6i");
-   return("1.0.6i");
+      return("1.0.6j");
+   return("1.0.6j");
 }
 
 png_charp
diff --git a/png.h b/png.h
index 863b412..4799709 100644
--- a/png.h
+++ b/png.h
@@ -1,7 +1,7 @@
 
 /* png.h - header file for PNG reference library
  *
- * libpng version 1.0.6i - May 1, 2000
+ * libpng version 1.0.6j - May 4, 2000
  * Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.
  * Copyright (c) 1996, 1997 Andreas Dilger
  * Copyright (c) 1998, 1999, 2000 Glenn Randers-Pehrson
@@ -9,7 +9,7 @@
  * Authors and maintainers:
  *  libpng versions 0.71, May 1995, through 0.88, January 1996: Guy Schalnat
  *  libpng versions 0.89c, June 1996, through 0.96, May 1997: Andreas Dilger
- *  libpng versions 0.97, January 1998, through 1.0.6i - May 1, 2000: Glenn
+ *  libpng versions 0.97, January 1998, through 1.0.6j - May 4, 2000: Glenn
  *  See also "Contributing Authors", below.
  *
  * Note about libpng version numbers:
@@ -20,39 +20,40 @@
  *    The following table summarizes matters since version 0.89c, which was
  *    the first widely used release:
  *
- *    source                   png.h    png.h   shared-lib
- *    version                  string     int   version
- *    -------                  ------   -----  ----------
- *    0.89c ("1.0 beta 3")     0.89        89  1.0.89
- *    0.90  ("1.0 beta 4")     0.90        90  0.90  [should have been 2.0.90]
- *    0.95  ("1.0 beta 5")     0.95        95  0.95  [should have been 2.0.95]
- *    0.96  ("1.0 beta 6")     0.96        96  0.96  [should have been 2.0.96]
- *    0.97b ("1.00.97 beta 7") 1.00.97     97  1.0.1 [should have been 2.0.97]
- *    0.97c                    0.97        97  2.0.97
- *    0.98                     0.98        98  2.0.98
- *    0.99                     0.99        98  2.0.99
- *    0.99a-m                  0.99        99  2.0.99
- *    1.00                     1.00       100  2.1.0 [100 should be 10000]
- *    1.0.0                    1.0.0      100  2.1.0 [100 should be 10000]
- *    1.0.1                    1.0.1    10001  2.1.0
- *    1.0.1a-e                 1.0.1a-e 10002  2.1.0.1a-e
- *    1.0.2                    1.0.2    10002  2.1.0.2
- *    1.0.2a-b                 1.0.2a-b 10003  2.1.0.2a-b
- *    1.0.3                    1.0.3    10003  2.1.0.3
- *    1.0.3a-d                 1.0.3a-d 10004  2.1.0.3a-d
- *    1.0.4                    1.0.4    10004  2.1.0.4
- *    1.0.4a-f                 1.0.4a-f 10005  2.1.0.4a-f
- *    1.0.5 (+ 2 patches)      1.0.5    10005  2.1.0.5
- *    1.0.5a-d                 1.0.5a-d 10006  2.1.0.5a-d
- *    1.0.5e-r                 1.0.5e-r 10100  2.1.0.5e-r (not source compatible)
- *    1.0.5s-v                 1.0.5s-v 10006  2.1.0.5s-v (not binary compatible)
- *    1.0.6 (+ 3 patches)      1.0.6    10006  2.1.0.6    (still binary incompat)
- *    1.0.6d-f                 1.0.6d-f 10007  2.1.0.6d-f (still binary incompat)
- *    1.0.6g                   1.0.6g   10007  2.1.0.6g
- *    1.0.6h                   1.0.6h   10007  10.6h
- *    1.0.6 (+ 4 patches)      1.0.6    10006  2.1.0.6ad  (compatible with 1.0.0)
- *    1.0.6i                   1.0.6i   10007  10.6i (can be compatible w/ 1.0.0)
- *    1.0.7                    1.0.7    10007  10.7  (still can be compatible)
+ *    source                 png.h    png.h  shared-lib
+ *    version                string     int  version
+ *    -------                ------   -----  ----------
+ *    0.89c "1.0 beta 3"     0.89        89  1.0.89
+ *    0.90  "1.0 beta 4"     0.90        90  0.90  [should have been 2.0.90]
+ *    0.95  "1.0 beta 5"     0.95        95  0.95  [should have been 2.0.95]
+ *    0.96  "1.0 beta 6"     0.96        96  0.96  [should have been 2.0.96]
+ *    0.97b "1.00.97 beta 7" 1.00.97     97  1.0.1 [should have been 2.0.97]
+ *    0.97c                  0.97        97  2.0.97
+ *    0.98                   0.98        98  2.0.98
+ *    0.99                   0.99        98  2.0.99
+ *    0.99a-m                0.99        99  2.0.99
+ *    1.00                   1.00       100  2.1.0 [100 should be 10000]
+ *    1.0.0                  1.0.0      100  2.1.0 [100 should be 10000]
+ *    1.0.1                  1.0.1    10001  2.1.0
+ *    1.0.1a-e               1.0.1a-e 10002  2.1.0.1a-e
+ *    1.0.2                  1.0.2    10002  2.1.0.2
+ *    1.0.2a-b               1.0.2a-b 10003  2.1.0.2a-b
+ *    1.0.3                  1.0.3    10003  2.1.0.3
+ *    1.0.3a-d               1.0.3a-d 10004  2.1.0.3a-d
+ *    1.0.4                  1.0.4    10004  2.1.0.4
+ *    1.0.4a-f               1.0.4a-f 10005  2.1.0.4a-f
+ *    1.0.5 (+ 2 patches)    1.0.5    10005  2.1.0.5
+ *    1.0.5a-d               1.0.5a-d 10006  2.1.0.5a-d
+ *    1.0.5e-r               1.0.5e-r 10100  2.1.0.5e-r (not source compatible)
+ *    1.0.5s-v               1.0.5s-v 10006  2.1.0.5s-v (not binary compatible)
+ *    1.0.6 (+ 3 patches)    1.0.6    10006  2.1.0.6    (still binary incompat)
+ *    1.0.6d-f               1.0.6d-f 10007  2.1.0.6d-f (still binary incompat)
+ *    1.0.6g                 1.0.6g   10007  2.1.0.6g
+ *    1.0.6h                 1.0.6h   10007  10.6h  (testing xy.z so-numbering)
+ *    1.0.6i                 1.0.6i   10007  10.6i (can be compatible w/ 1.0.0)
+ *    1.0.6j                 1.0.6j   10007  2.1.0.6j   (compatible with 1.0.0)
+ *    1.0.6 (+ 4 patches)    1.0.6    10006  2.1.0.6ad  (compatible with 1.0.0)
+ *    1.0.7                  1.0.7    10007  2.1.0.7    (still compatible)
  *
  *    Henceforth the source version will match the shared-library major
  *    and minor numbers; the shared-library major version number will be
@@ -81,7 +82,7 @@
  * Copyright (c) 1996, 1997 Andreas Dilger
  * (libpng versions 0.89c, June 1996, through 0.96, May 1997)
  * Copyright (c) 1998, 1999, 2000 Glenn Randers-Pehrson
- * (libpng versions 0.97, January 1998, through 1.0.6i, May 1, 2000)
+ * (libpng versions 0.97, January 1998, through 1.0.6j, May 4, 2000)
  *
  * For the purposes of this copyright and license, "Contributing Authors"
  * is defined as the following set of individuals:
@@ -156,13 +157,13 @@
  * Y2K compliance in libpng:
  * =========================
  *
- *    May 1, 2000
+ *    May 4, 2000
  *
  *    Since the PNG Development group is an ad-hoc body, we can't make
  *    an official declaration.
  *
  *    This is your unofficial assurance that libpng from version 0.71 and
- *    upward through 1.0.6i are Y2K compliant.  It is my belief that earlier
+ *    upward through 1.0.6j are Y2K compliant.  It is my belief that earlier
  *    versions were also Y2K compliant.
  *
  *    Libpng only has three year fields.  One is a 2-byte unsigned integer
@@ -240,7 +241,7 @@
  */
 
 /* Version information for png.h - this should match the version in png.c */
-#define PNG_LIBPNG_VER_STRING "1.0.6i"
+#define PNG_LIBPNG_VER_STRING "1.0.6j"
 
 /* Careful here.  At one time, Guy wanted to use 082, but that would be octal.
  * We must not include leading zeros.
@@ -1100,9 +1101,9 @@
 };
 
 /* This prevents a compiler error in png_get_copyright() in png.c if png.c
-and png.h are both at * version 1.0.6i
+and png.h are both at * version 1.0.6j
  */
-typedef png_structp version_1_0_6i;
+typedef png_structp version_1_0_6j;
 
 typedef png_struct FAR * FAR * png_structpp;
 
@@ -2102,7 +2103,7 @@
 extern PNG_EXPORT(png_charp,png_get_libpng_ver) PNGARG((png_structp png_ptr));
 
 #define PNG_HEADER_VERSION_STRING \
-   " libpng version 1.0.6i - May 1, 2000 (header)\n"
+   " libpng version 1.0.6j - May 4, 2000 (header)\n"
 
 #ifdef PNG_READ_COMPOSITE_NODIV_SUPPORTED
 /* With these routines we avoid an integer divide, which will be slower on
@@ -2333,11 +2334,21 @@
  * (old interface - NOT DLL EXPORTED).
  */
 extern void png_read_init PNGARG((png_structp png_ptr));
+#define png_read_init(png_ptr) png_read_init_2(png_ptr, \
+    PNG_LIBPNG_VER_STRING,  sizeof(png_struct), sizeof(png_info));
+extern void png_read_init_2 PNGARG((png_structp png_ptr,
+    png_const_charp user_png_ver, png_size_t png_struct_size, png_size_t
+    png_info_size));
 
 /* Initialize png_ptr struct for writing, and allocate any other memory.
  * (old interface - NOT DLL EXPORTED).
  */
 extern void png_write_init PNGARG((png_structp png_ptr));
+#define png_write_init(png_ptr) png_write_init_2(png_ptr, \
+    PNG_LIBPNG_VER_STRING, sizeof(png_struct), sizeof(png_info));
+extern void png_write_init_2 PNGARG((png_structp png_ptr,
+    png_const_charp user_png_ver, png_size_t png_struct_size, png_size_t
+    png_info_size));
 
 /* Allocate memory for an internal libpng struct */
 PNG_EXTERN png_voidp png_create_struct PNGARG((int type));
diff --git a/pngasmrd.h b/pngasmrd.h
index 98b81b2..f7c1e5b 100644
--- a/pngasmrd.h
+++ b/pngasmrd.h
@@ -1,6 +1,6 @@
 /* pngasmrd.h - assembler version of utilities to read a PNG file
  *
- * libpng 1.0.6i - May 1, 2000
+ * libpng 1.0.6j - May 4, 2000
  * For conditions of distribution and use, see copyright notice in png.h
  * Copyright (c) 1999, 2000 Glenn Randers-Pehrson
  *
diff --git a/pngconf.h b/pngconf.h
index b40143d..d134f61 100644
--- a/pngconf.h
+++ b/pngconf.h
@@ -1,7 +1,7 @@
 
 /* pngconf.h - machine configurable file for libpng
  *
- * libpng 1.0.6i - May 1, 2000
+ * libpng 1.0.6j - May 4, 2000
  * For conditions of distribution and use, see copyright notice in png.h
  * Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.
  * Copyright (c) 1996, 1997 Andreas Dilger
@@ -17,37 +17,6 @@
 #ifndef PNGCONF_H
 #define PNGCONF_H
 
-/* The following support, added at version 1.0.6, will be turned on by
- * default in version 2.0.0.
- * They have been turned off here in case you need binary compatibility
- * with old applications that require the length of png_struct and
- * png_info to remain at the old length.
- */
-
-
-#ifdef PNG_LEGACY_SUPPORTED
-#define PNG_NO_FREE_ME
-#define PNG_NO_READ_UNKNOWN_CHUNKS
-#define PNG_NO_WRITE_UNKNOWN_CHUNKS
-#define PNG_NO_READ_USER_CHUNKS
-#define PNG_NO_READ_iCCP
-#define PNG_NO_WRITE_iCCP
-#define PNG_NO_READ_sCAL
-#define PNG_NO_WRITE_sCAL
-#define PNG_NO_READ_sPLT
-#define PNG_NO_WRITE_sPLT
-#define PNG_NO_INFO_IMAGE
-#define PNG_NO_READ_RGB_TO_GRAY
-#define PNG_NO_READ_USER_TRANSFORM
-#define PNG_NO_WRITE_USER_TRANSFORM
-#define PNG_NO_USER_MEM
-#define PNG_NO_READ_EMPTY_PLTE
-#endif
-
-#ifndef PNG_NO_FREE_ME
-#define PNG_FREE_ME_SUPPORTED
-#endif
-
 /* This is the size of the compression buffer, and thus the size of
  * an IDAT chunk.  Make this whatever size you feel is best for your
  * machine.  One of these will be allocated per png_struct.  When this
@@ -298,6 +267,31 @@
    1.0.1c, for consistency)
  */
 
+/* The following support, added after version 1.0.0, can be turned off here en
+ * masse by defining PNG_LEGACY_SUPPORTED in case you need binary compatibility
+ * with old applications that require the length of png_struct and png_info
+ * to remain unchanged.
+ */
+
+#ifdef PNG_LEGACY_SUPPORTED
+#define PNG_NO_FREE_ME
+#define PNG_NO_READ_UNKNOWN_CHUNKS
+#define PNG_NO_WRITE_UNKNOWN_CHUNKS
+#define PNG_NO_READ_USER_CHUNKS
+#define PNG_NO_READ_iCCP
+#define PNG_NO_WRITE_iCCP
+#define PNG_NO_READ_sCAL
+#define PNG_NO_WRITE_sCAL
+#define PNG_NO_READ_sPLT
+#define PNG_NO_WRITE_sPLT
+#define PNG_NO_INFO_IMAGE
+#define PNG_NO_READ_RGB_TO_GRAY
+#define PNG_NO_READ_USER_TRANSFORM
+#define PNG_NO_WRITE_USER_TRANSFORM
+#define PNG_NO_USER_MEM
+#define PNG_NO_READ_EMPTY_PLTE
+#endif
+
 #ifndef PNG_NO_FLOATING_POINT_SUPPORTED 
 #define PNG_FLOATING_POINT_SUPPORTED
 #endif
@@ -308,6 +302,10 @@
 #define PNG_FIXED_POINT_SUPPORTED
 #endif
 
+#ifndef PNG_NO_FREE_ME
+#define PNG_FREE_ME_SUPPORTED
+#endif
+
 #if !defined(PNG_READ_TRANSFORMS_NOT_SUPPORTED) && \
     !defined(PNG_NO_READ_TRANSFORMS)
 #define PNG_READ_TRANSFORMS_SUPPORTED
@@ -381,9 +379,11 @@
               /* still have interlacing unless you change the following line: */
 #define PNG_READ_INTERLACING_SUPPORTED /* required for PNG-compliant decoders */
 
-#ifndef PNG_NO_READ_COMPOSITED_NODIV
+#ifndef PNG_NO_READ_COMPOSITE_NODIV
+#ifndef PNG_NO_READ_COMPOSITED_NODIV  /* libpng-1.0.x misspelling */
 #define PNG_READ_COMPOSITE_NODIV_SUPPORTED    /* well tested on Intel and SGI */
 #endif
+#endif
 
 #ifndef PNG_NO_READ_EMPTY_PLTE
 #define PNG_READ_EMPTY_PLTE_SUPPORTED  /* useful for MNG applications */
@@ -604,7 +604,9 @@
 #endif
 #ifndef PNG_NO_READ_UNKNOWN_CHUNKS
 #  define PNG_READ_UNKNOWN_CHUNKS_SUPPORTED
-#  define PNG_UNKNOWN_CHUNKS_SUPPORTED
+#  ifndef PNG_UNKNOWN_CHUNKS_SUPPORTED
+#    define PNG_UNKNOWN_CHUNKS_SUPPORTED
+#  endif
 #  ifndef PNG_NO_HANDLE_AS_UNKNOWN
 #    define PNG_HANDLE_AS_UNKNOWN_SUPPORTED
 #  endif
diff --git a/pngerror.c b/pngerror.c
index ca64d5b..45f3dcf 100644
--- a/pngerror.c
+++ b/pngerror.c
@@ -1,7 +1,7 @@
 
 /* pngerror.c - stub functions for i/o and memory allocation
  *
- * libpng 1.0.6i - May 1, 2000
+ * libpng 1.0.6j - May 4, 2000
  * For conditions of distribution and use, see copyright notice in png.h
  * Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.
  * Copyright (c) 1996, 1997 Andreas Dilger
diff --git a/pnggccrd.c b/pnggccrd.c
index 228f1f0..309b93b 100644
--- a/pnggccrd.c
+++ b/pnggccrd.c
@@ -6,7 +6,7 @@
  *     and http://www.intel.com/drg/pentiumII/appnotes/923/923.htm
  *     for Intel's performance analysis of the MMX vs. non-MMX code.
  *
- * libpng 1.0.6i - May 1, 2000
+ * libpng 1.0.6j - May 4, 2000
  * For conditions of distribution and use, see copyright notice in png.h
  * Copyright (c) 1998, Intel Corporation
  * Copyright (c) 1998, 1999, 2000 Glenn Randers-Pehrson
diff --git a/pngget.c b/pngget.c
index 3b8b0f0..c7a6403 100644
--- a/pngget.c
+++ b/pngget.c
@@ -1,7 +1,7 @@
 
 /* pngget.c - retrieval of values from info struct
  *
- * libpng 1.0.6i - May 1, 2000
+ * libpng 1.0.6j - May 4, 2000
  * For conditions of distribution and use, see copyright notice in png.h
  * Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.
  * Copyright (c) 1996, 1997 Andreas Dilger
diff --git a/pngmem.c b/pngmem.c
index ce69191..ff12605 100644
--- a/pngmem.c
+++ b/pngmem.c
@@ -1,7 +1,7 @@
 
 /* pngmem.c - stub functions for memory allocation
  *
- * libpng 1.0.6i - May 1, 2000
+ * libpng 1.0.6j - May 4, 2000
  * For conditions of distribution and use, see copyright notice in png.h
  * Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.
  * Copyright (c) 1996, 1997 Andreas Dilger
diff --git a/pngpread.c b/pngpread.c
index 1454f52..91afd98 100644
--- a/pngpread.c
+++ b/pngpread.c
@@ -1,7 +1,7 @@
 
 /* pngpread.c - read a png file in push mode
  *
- * libpng 1.0.6i - May 1, 2000
+ * libpng 1.0.6j - May 4, 2000
  * For conditions of distribution and use, see copyright notice in png.h
  * Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.
  * Copyright (c) 1996, 1997 Andreas Dilger
diff --git a/pngread.c b/pngread.c
index 813df00..96b6cab 100644
--- a/pngread.c
+++ b/pngread.c
@@ -1,7 +1,7 @@
 
 /* pngread.c - read a PNG file
  *
- * libpng 1.0.6i - May 1, 2000
+ * libpng 1.0.6j - May 4, 2000
  * For conditions of distribution and use, see copyright notice in png.h
  * Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.
  * Copyright (c) 1996, 1997 Andreas Dilger
@@ -86,6 +86,18 @@
          "Incompatible libpng version in application and library");
    }
 
+   /* Libpng 1.0.6 was not binary compatible, due to insertion of the
+      info_ptr->free_me member.  Note to maintainer: this test can be
+      removed from version 2.0.0 and beyond because the previous test
+      would have already rejected it. */
+
+   if (user_png_ver[4] == '6' && user_png_ver[2] == '0' && 
+       user_png_ver[0] == '1' && user_png_ver[5] == '\0')
+   {
+      png_error(png_ptr,
+         "Application must be recompiled; version 1.0.6 was incompatible");
+   }
+
    /* initialize zbuf - compression buffer */
    png_ptr->zbuf_size = PNG_ZBUF_SIZE;
    png_ptr->zbuf = (png_bytep)png_malloc(png_ptr,
@@ -116,14 +128,44 @@
 /* Initialize PNG structure for reading, and allocate any memory needed.
    This interface is deprecated in favour of the png_create_read_struct(),
    and it will eventually disappear. */
+#undef png_read_init
 void
 png_read_init(png_structp png_ptr)
 {
+   /* We only come here via pre-1.0.7-compiled applications */
+   png_read_init_2(png_ptr, "1.0.0", 10000, 10000);
+}
+
+void
+png_read_init_2(png_structp png_ptr, png_const_charp user_png_ver,
+   png_size_t png_struct_size, png_size_t png_info_size)
+{
 #ifdef PNG_SETJMP_SUPPORTED
    jmp_buf tmp_jmp;  /* to save current jump buffer */
 #endif
 
-   png_debug(1, "in png_read_init\n");
+#ifndef PNG_LEGACY_SUPPORTED
+   int i=0;
+   do
+   {
+     if(user_png_ver[i] != png_libpng_ver[i])
+     {
+       png_ptr->error_fn=(png_error_ptr)NULL;
+       png_error(png_ptr,
+        "Application uses deprecated png_read_init() and must be recompiled.");
+     }
+   } while (png_libpng_ver[i++]);
+#endif
+
+   if(sizeof(png_struct) > png_struct_size ||
+      sizeof(png_info) > png_info_size)
+     {
+       png_ptr->error_fn=(png_error_ptr)NULL;
+       png_error(png_ptr,
+      "Application and library have different sized structs. Please recompile.");
+     }
+
+   png_debug(1, "in png_read_init_2\n");
 
 #ifdef PNG_SETJMP_SUPPORTED
    /* save jump buffer and error functions */
@@ -138,15 +180,6 @@
    png_memcpy(png_ptr->jmpbuf, tmp_jmp, sizeof (jmp_buf));
 #endif
 
-#ifndef PNG_LEGACY_SUPPORTED
-   if(!(png_ptr->mode & PNG_CREATED_READ_STRUCT))
-   {
-      png_ptr->error_fn=NULL;
-      png_error(png_ptr,
-         "Read struct not properly created; use a legacy-supporting libpng.");
-   }
-#endif
-
    /* initialize zbuf - compression buffer */
    png_ptr->zbuf_size = PNG_ZBUF_SIZE;
    png_ptr->zbuf = (png_bytep)png_malloc(png_ptr,
@@ -168,6 +201,11 @@
    png_ptr->zstream.avail_out = (uInt)png_ptr->zbuf_size;
 
    png_set_read_fn(png_ptr, NULL, NULL);
+
+#ifdef PNG_LEGACY_SUPPORTED
+   if (user_png_ver)
+      return;
+#endif
 }
 
 /* Read the information before the actual image data.  This has been
@@ -652,7 +690,7 @@
  * not called png_set_interlace_handling(), the display_row buffer will
  * be ignored, so pass NULL to it.
  *
- * [*] png_handle_alpha() does not exist yet, as of libpng version 1.0.6i.
+ * [*] png_handle_alpha() does not exist yet, as of libpng version 1.0.6j.
  */
 
 void
@@ -701,7 +739,7 @@
  * only call this function once.  If you desire to have an image for
  * each pass of a interlaced image, use png_read_rows() instead.
  *
- * [*] png_handle_alpha() does not exist yet, as of libpng version 1.0.6i.
+ * [*] png_handle_alpha() does not exist yet, as of libpng version 1.0.6j.
  */
 void
 png_read_image(png_structp png_ptr, png_bytepp image)
diff --git a/pngrio.c b/pngrio.c
index d7990c7..4ff4d51 100644
--- a/pngrio.c
+++ b/pngrio.c
@@ -1,7 +1,7 @@
 
 /* pngrio.c - functions for data input
  *
- * libpng 1.0.6i - May 1, 2000
+ * libpng 1.0.6j - May 4, 2000
  * For conditions of distribution and use, see copyright notice in png.h
  * Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.
  * Copyright (c) 1996, 1997 Andreas Dilger
diff --git a/pngrtran.c b/pngrtran.c
index 311e9f1..9ed58aa 100644
--- a/pngrtran.c
+++ b/pngrtran.c
@@ -1,7 +1,7 @@
 
 /* pngrtran.c - transforms the data in a row for PNG readers
  *
- * libpng 1.0.6i - May 1, 2000
+ * libpng 1.0.6j - May 4, 2000
  * For conditions of distribution and use, see copyright notice in png.h
  * Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.
  * Copyright (c) 1996, 1997 Andreas Dilger
diff --git a/pngrutil.c b/pngrutil.c
index de732a0..50e6037 100644
--- a/pngrutil.c
+++ b/pngrutil.c
@@ -1,7 +1,7 @@
 
 /* pngrutil.c - utilities to read a PNG file
  *
- * libpng 1.0.6i - May 1, 2000
+ * libpng 1.0.6j - May 4, 2000
  * For conditions of distribution and use, see copyright notice in png.h
  * Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.
  * Copyright (c) 1996, 1997 Andreas Dilger
diff --git a/pngset.c b/pngset.c
index 397ab6f..9894aec 100644
--- a/pngset.c
+++ b/pngset.c
@@ -1,7 +1,7 @@
 
 /* pngset.c - storage of image information into info struct
  *
- * libpng 1.0.6i - May 1, 2000
+ * libpng 1.0.6j - May 4, 2000
  * For conditions of distribution and use, see copyright notice in png.h
  * Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.
  * Copyright (c) 1996, 1997 Andreas Dilger
diff --git a/pngtest.c b/pngtest.c
index 93b373b..e4b23b9 100644
--- a/pngtest.c
+++ b/pngtest.c
@@ -1,7 +1,7 @@
 
 /* pngtest.c - a simple test program to test libpng
  *
- * libpng 1.0.6i - May 1, 2000
+ * libpng 1.0.6j - May 4, 2000
  * For conditions of distribution and use, see copyright notice in png.h
  * Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.
  * Copyright (c) 1996, 1997 Andreas Dilger
@@ -1378,4 +1378,4 @@
 }
 
 /* Generate a compiler error if there is an old png.h in the search path. */
-typedef version_1_0_6i your_png_h_is_not_version_1_0_6i;
+typedef version_1_0_6j your_png_h_is_not_version_1_0_6j;
diff --git a/pngtrans.c b/pngtrans.c
index b540579..3b68b7d 100644
--- a/pngtrans.c
+++ b/pngtrans.c
@@ -1,7 +1,7 @@
 
 /* pngtrans.c - transforms the data in a row (used by both readers and writers)
  *
- * libpng 1.0.6i - May 1, 2000
+ * libpng 1.0.6j - May 4, 2000
  * For conditions of distribution and use, see copyright notice in png.h
  * Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.
  * Copyright (c) 1996, 1997 Andreas Dilger
diff --git a/pngvcrd.c b/pngvcrd.c
index 73c9c77..820d7fc 100644
--- a/pngvcrd.c
+++ b/pngvcrd.c
@@ -2,7 +2,7 @@
  *
  * For Intel x86 CPU and Microsoft Visual C++ compiler
  *
- * libpng 1.0.6i - May 1, 2000
+ * libpng 1.0.6j - May 4, 2000
  * For conditions of distribution and use, see copyright notice in png.h
  * Copyright (c) 1998, Intel Corporation
  * Copyright (c) 1998, 1999, 2000 Glenn Randers-Pehrson
diff --git a/pngwio.c b/pngwio.c
index 3a2f06c..6322624 100644
--- a/pngwio.c
+++ b/pngwio.c
@@ -1,7 +1,7 @@
 
 /* pngwio.c - functions for data output
  *
- * libpng 1.0.6i - May 1, 2000
+ * libpng 1.0.6j - May 4, 2000
  * For conditions of distribution and use, see copyright notice in png.h
  * Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.
  * Copyright (c) 1996, 1997 Andreas Dilger
diff --git a/pngwrite.c b/pngwrite.c
index e28caf3..a90c816 100644
--- a/pngwrite.c
+++ b/pngwrite.c
@@ -1,7 +1,7 @@
 
 /* pngwrite.c - general routines to write a PNG file
  *
- * libpng 1.0.6i - May 1, 2000
+ * libpng 1.0.6j - May 4, 2000
  * For conditions of distribution and use, see copyright notice in png.h
  * Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.
  * Copyright (c) 1996, 1997 Andreas Dilger
@@ -468,6 +468,19 @@
          "Incompatible libpng version in application and library");
    }
 
+   /* Libpng 1.0.6 was not binary compatible, due to insertion of the
+      info_ptr->free_me member.  Note to maintainer: this test can be
+      removed from version 2.0.0 and beyond because the previous test
+      would have already rejected it. */
+
+   if (user_png_ver[4] == '6' && user_png_ver[2] == '0' && 
+       user_png_ver[0] == '1' && user_png_ver[5] == '\0')
+   {
+      png_error(png_ptr,
+         "Application must be recompiled; version 1.0.6 was incompatible");
+   }
+
+
    /* initialize zbuf - compression buffer */
    png_ptr->zbuf_size = PNG_ZBUF_SIZE;
    png_ptr->zbuf = (png_bytep)png_malloc(png_ptr,
@@ -486,14 +499,43 @@
 }
 
 /* Initialize png_ptr structure, and allocate any memory needed */
+#undef png_write_init
 void
 png_write_init(png_structp png_ptr)
 {
+   /* We only come here via pre-1.0.7-compiled applications */
+   png_write_init_2(png_ptr, "1.0.0", 10000, 10000);
+}
+
+void
+png_write_init_2(png_structp png_ptr, png_const_charp user_png_ver,
+   png_size_t png_struct_size, png_size_t png_info_size)
+{
 #ifdef PNG_SETJMP_SUPPORTED
    jmp_buf tmp_jmp; /* to save current jump buffer */
 #endif
+#ifndef PNG_LEGACY_SUPPORTED
+   int i = 0;
+   do
+   {
+     if (user_png_ver[i] != png_libpng_ver[i])
+     {
+       png_ptr->error_fn=(png_error_ptr)NULL;
+       png_error(png_ptr,
+       "Application uses deprecated png_write_init() and must be recompiled.");
+     }
+   } while (png_libpng_ver[i++]);
+#endif
+   if (sizeof(png_struct) > png_struct_size ||
+      sizeof(png_info) > png_info_size)
+     {
+       png_ptr->error_fn=(png_error_ptr)NULL;
+       png_error(png_ptr,
+      "Application and library have different sized structs. Please recompile.");
+     }
 
-   png_debug(1, "in png_write_init\n");
+   png_debug(1, "in png_write_init_2\n");
+
 #ifdef PNG_SETJMP_SUPPORTED
    /* save jump buffer and error functions */
    png_memcpy(tmp_jmp, png_ptr->jmpbuf, sizeof (jmp_buf));
@@ -507,15 +549,6 @@
    png_memcpy(png_ptr->jmpbuf, tmp_jmp, sizeof (jmp_buf));
 #endif
 
-#ifndef PNG_LEGACY_SUPPORTED
-   if(!(png_ptr->mode & PNG_CREATED_WRITE_STRUCT))
-   {
-      png_ptr->error_fn=NULL;
-      png_error(png_ptr,
-        "Write struct not properly created; use a legacy-supporting libpng.");
-   }
-#endif
-
    /* initialize zbuf - compression buffer */
    png_ptr->zbuf_size = PNG_ZBUF_SIZE;
    png_ptr->zbuf = (png_bytep)png_malloc(png_ptr,
@@ -526,6 +559,11 @@
    png_set_filter_heuristics(png_ptr, PNG_FILTER_HEURISTIC_DEFAULT,
       1, NULL, NULL);
 #endif
+
+#ifdef PNG_LEGACY_SUPPORTED
+   if (user_png_ver)
+      return;
+#endif
 }
 
 /* Write a few rows of image data.  If the image is interlaced,
diff --git a/pngwtran.c b/pngwtran.c
index 80e80b6..6e4385b 100644
--- a/pngwtran.c
+++ b/pngwtran.c
@@ -1,7 +1,7 @@
 
 /* pngwtran.c - transforms the data in a row for PNG writers
  *
- * libpng 1.0.6i - May 1, 2000
+ * libpng 1.0.6j - May 4, 2000
  * For conditions of distribution and use, see copyright notice in png.h
  * Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.
  * Copyright (c) 1996, 1997 Andreas Dilger
diff --git a/pngwutil.c b/pngwutil.c
index b722933..c178d71 100644
--- a/pngwutil.c
+++ b/pngwutil.c
@@ -1,7 +1,7 @@
 
 /* pngwutil.c - utilities to write a PNG file
  *
- * libpng 1.0.6i - May 1, 2000
+ * libpng 1.0.6j - May 4, 2000
  * For conditions of distribution and use, see copyright notice in png.h
  * Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.
  * Copyright (c) 1996, 1997 Andreas Dilger
diff --git a/scripts/makefile.beos b/scripts/makefile.beos
index 0790cad..34250b1 100644
--- a/scripts/makefile.beos
+++ b/scripts/makefile.beos
@@ -1,14 +1,9 @@
 # makefile for libpng on BeOS x86 ELF with gcc
 # modified from makefile.linux by Sander Stoks
 # Copyright (C) 1996, 1997 Andreas Dilger
-# Copyright (C) 1999, 2000 Greg Roelofs
+# Copyright (C) 1999 Greg Roelofs
 # For conditions of distribution and use, see copyright notice in png.h
 
-# read libpng.txt or png.h to see why PNGMAJ is 10.  You should not
-# have to change it.
-PNGMAJ = 10
-PNGMIN = 6i
-PNGVER = $(PNGMAJ).$(PNGMIN)
 CC=gcc
 
 # Where the zlib library and include files are located
@@ -33,6 +28,11 @@
 RANLIB=ranlib
 #RANLIB=echo
 
+# read libpng.txt or png.h to see why PNGMAJ is 2.  You should not
+# have to change it.
+PNGMAJ = 2
+PNGMIN = 1.0.6j
+PNGVER = $(PNGMAJ).$(PNGMIN)
 
 # where make install puts libpng.a, libpng.so*, and png.h
 prefix=/usr/local
diff --git a/scripts/makefile.dec b/scripts/makefile.dec
index 02d5f20..429353b 100644
--- a/scripts/makefile.dec
+++ b/scripts/makefile.dec
@@ -11,10 +11,10 @@
 ZLIBLIB=../zlib
 ZLIBINC=../zlib
 
-# read libpng.txt or png.h to see why PNGMAJ is 10.  You should not
+# read libpng.txt or png.h to see why PNGMAJ is 2.  You should not
 # have to change it.
-PNGMAJ = 10
-PNGMIN = 6i
+PNGMAJ = 2
+PNGMIN = 1.0.6j
 PNGVER = $(PNGMAJ).$(PNGMIN)
 
 CC=cc
diff --git a/scripts/makefile.gcmmx b/scripts/makefile.gcmmx
index 7dc9b1f..e1468f8 100644
--- a/scripts/makefile.gcmmx
+++ b/scripts/makefile.gcmmx
@@ -31,10 +31,10 @@
 RANLIB=ranlib
 #RANLIB=echo
 
-# read libpng.txt or png.h to see why PNGMAJ is 10.  You should not
+# read libpng.txt or png.h to see why PNGMAJ is 2.  You should not
 # have to change it.
-PNGMAJ = 10
-PNGMIN = 6i
+PNGMAJ = 2
+PNGMIN = 1.0.6j
 PNGVER = $(PNGMAJ).$(PNGMIN)
 
 INCPATH=$(prefix)/include
diff --git a/scripts/makefile.linux b/scripts/makefile.linux
index bd23d80..37d875f 100644
--- a/scripts/makefile.linux
+++ b/scripts/makefile.linux
@@ -1,6 +1,6 @@
 # makefile for libpng on Linux ELF with gcc
 # Copyright (C) 1996, 1997 Andreas Dilger
-# Copyright (C) 1998-2000, Greg Roelofs
+# Copyright (C) 1998, 1999 Greg Roelofs
 # For conditions of distribution and use, see copyright notice in png.h
 
 CC=gcc
@@ -31,10 +31,10 @@
 RANLIB=ranlib
 #RANLIB=echo
 
-# read libpng.txt or png.h to see why PNGMAJ is 10.  You should not
+# read libpng.txt or png.h to see why PNGMAJ is 2.  You should not
 # have to change it.
-PNGMAJ = 10
-PNGMIN = 6i
+PNGMAJ = 2
+PNGMIN = 1.0.6j
 PNGVER = $(PNGMAJ).$(PNGMIN)
 
 INCPATH=$(prefix)/include
diff --git a/scripts/makefile.sco b/scripts/makefile.sco
index 98a95a7..0d69b2d 100644
--- a/scripts/makefile.sco
+++ b/scripts/makefile.sco
@@ -2,7 +2,7 @@
 # Contributed by Mike Hopkirk (hops@sco.com) modified from Makefile.lnx
 #   force ELF build dynamic linking, SONAME setting in lib and RPATH in app
 # Copyright (C) 1996, 1997 Andreas Dilger
-# Copyright (C) 1998, 2000 Greg Roelofs
+# Copyright (C) 1998 Greg Roelofs
 # For conditions of distribution and use, see copyright notice in png.h
 
 CC=cc
@@ -22,10 +22,10 @@
 #RANLIB=ranlib
 RANLIB=echo
 
-# read libpng.txt or png.h to see why PNGMAJ is 10.  You should not
+# read libpng.txt or png.h to see why PNGMAJ is 2.  You should not
 # have to change it.
-PNGMAJ = 10
-PNGMIN = 6i
+PNGMAJ = 2
+PNGMIN = 1.0.6j
 PNGVER = $(PNGMAJ).$(PNGMIN)
 
 INCPATH=$(prefix)/include
diff --git a/scripts/makefile.sggcc b/scripts/makefile.sggcc
index d7f8c3a..90bafdc 100644
--- a/scripts/makefile.sggcc
+++ b/scripts/makefile.sggcc
@@ -19,8 +19,8 @@
 LDFLAGS=-L. -L$(ZLIBLIB) -lpng -lz -lm
 LDSHARED=gcc -shared
 
-VER=1.0.6i
-LIBS=libpng.so.1.0.6i
+VER=1.0.6j
+LIBS=libpng.so.1.0.6j
 SHAREDLIB=libpng.so
 libdir=$(prefix)/lib32
 
diff --git a/scripts/makefile.solaris b/scripts/makefile.solaris
index 43f236e..b35cd92 100644
--- a/scripts/makefile.solaris
+++ b/scripts/makefile.solaris
@@ -1,7 +1,7 @@
 # makefile for libpng on Solaris 2.x with gcc
 # Contributed by William L. Sebok, based on makefile.linux
 # Copyright (C) 1996, 1997 Andreas Dilger
-# Copyright (C) 1998, 2000 Greg Roelofs
+# Copyright (C) 1998 Greg Roelofs
 # For conditions of distribution and use, see copyright notice in png.h
 
 CC=gcc
@@ -28,10 +28,10 @@
 #RANLIB=ranlib
 RANLIB=echo
 
-# read libpng.txt or png.h to see why PNGMAJ is 10.  You should not
+# read libpng.txt or png.h to see why PNGMAJ is 2.  You should not
 # have to change it.
-PNGMAJ = 10
-PNGMIN = 6i
+PNGMAJ = 2
+PNGMIN = 1.0.6j
 PNGVER = $(PNGMAJ).$(PNGMIN)
 
 INCPATH=$(prefix)/include
diff --git a/scripts/pngdef.pas b/scripts/pngdef.pas
index bfac791..8363ac4 100644
--- a/scripts/pngdef.pas
+++ b/scripts/pngdef.pas
@@ -3,7 +3,7 @@
 interface
 
 const
-  PNG_LIBPNG_VER_STRING = '1.0.6i';
+  PNG_LIBPNG_VER_STRING = '1.0.6j';
   PNG_LIBPNG_VER        =  10007;
 
 type
