[proj] 01/06: New upstream version 5.0.1~rc1

Bas Couwenberg sebastic at debian.org
Wed Mar 21 15:58:09 UTC 2018


This is an automated email from the git hooks/post-receive script.

sebastic pushed a commit to branch master
in repository proj.

commit 9eae050942cb3c07434c00bac0b77abb8a51f7ac
Author: Bas Couwenberg <sebastic at xs4all.nl>
Date:   Wed Mar 21 16:45:46 2018 +0100

    New upstream version 5.0.1~rc1
---
 CMakeLists.txt                  |  14 +-
 Makefile.in                     |  16 +-
 NEWS                            |  51 +++
 aclocal.m4                      | 192 ++++----
 cmake/Makefile.in               |  14 +-
 compile                         |   6 +-
 configure                       | 246 +++++-----
 configure.ac                    |  12 +-
 depcomp                         |   6 +-
 jniwrap/Makefile.in             |  16 +-
 jniwrap/org/Makefile.in         |  16 +-
 jniwrap/org/proj4/Makefile.in   |  14 +-
 m4/ax_check_compile_flag.m4     |  74 +++
 man/Makefile.in                 |  16 +-
 man/man1/Makefile.in            |  14 +-
 man/man1/cct.1                  | 296 ++++++++----
 man/man1/cs2cs.1                | 377 ++++++++--------
 man/man1/geod.1                 | 451 ++++++++++---------
 man/man1/gie.1                  | 475 ++++++++++++++-----
 man/man1/proj.1                 | 516 ++++++++++-----------
 man/man3/Makefile.in            |  14 +-
 missing                         |  12 +-
 nad/Makefile.in                 |  14 +-
 nad/proj_outIGNF.dist           |  10 +-
 src/Makefile.am                 |   2 +-
 src/Makefile.in                 | 977 ++++++++++++++++++++++++++++++----------
 src/PJ_aea.c                    |   2 +-
 src/PJ_aeqd.c                   |   2 +-
 src/PJ_airy.c                   |   2 +-
 src/PJ_aitoff.c                 |   2 +-
 src/PJ_bacon.c                  |   2 +-
 src/PJ_bipc.c                   |   2 +-
 src/PJ_boggs.c                  |   2 +-
 src/PJ_bonne.c                  |   2 +-
 src/PJ_calcofi.c                |   4 +-
 src/PJ_cart.c                   |  24 +-
 src/PJ_cc.c                     |   2 +-
 src/PJ_ccon.c                   |   2 +-
 src/PJ_cea.c                    |   2 +-
 src/PJ_chamb.c                  |   2 +-
 src/PJ_collg.c                  |   2 +-
 src/PJ_comill.c                 |   2 +-
 src/PJ_crast.c                  |   2 +-
 src/PJ_deformation.c            |   2 +-
 src/PJ_denoy.c                  |   2 +-
 src/PJ_eck2.c                   |   2 +-
 src/PJ_eck4.c                   |   2 +-
 src/PJ_eqc.c                    |   2 +-
 src/PJ_eqdc.c                   |   2 +-
 src/PJ_fahey.c                  |   2 +-
 src/PJ_fouc_s.c                 |   2 +-
 src/PJ_gall.c                   |   2 +-
 src/PJ_geoc.c                   |   2 +-
 src/PJ_geos.c                   |   2 +-
 src/PJ_gn_sinu.c                |   2 +-
 src/PJ_gnom.c                   |   2 +-
 src/PJ_goode.c                  |   2 +-
 src/PJ_hammer.c                 |   2 +-
 src/PJ_hatano.c                 |   2 +-
 src/PJ_healpix.c                |  12 +-
 src/PJ_horner.c                 |   8 +-
 src/PJ_imw_p.c                  |   2 +-
 src/PJ_isea.c                   |   2 +-
 src/PJ_laea.c                   |   2 +-
 src/PJ_lagrng.c                 |   2 +-
 src/PJ_lcc.c                    |   2 +-
 src/PJ_lcca.c                   |   2 +-
 src/PJ_loxim.c                  |   2 +-
 src/PJ_lsat.c                   |   2 +-
 src/PJ_mbtfpp.c                 |   2 +-
 src/PJ_mbtfpq.c                 |   2 +-
 src/PJ_merc.c                   |   2 +-
 src/PJ_misrsom.c                |   2 +-
 src/PJ_molodensky.c             |   2 +-
 src/PJ_nsper.c                  |   2 +-
 src/PJ_ob_tran.c                |   2 +-
 src/PJ_ocea.c                   |   2 +-
 src/PJ_oea.c                    |   2 +-
 src/PJ_omerc.c                  |   2 +-
 src/PJ_ortho.c                  |   2 +-
 src/PJ_patterson.c              |   2 +-
 src/PJ_pipeline.c               |   4 +-
 src/PJ_poly.c                   |   2 +-
 src/PJ_putp3.c                  |   2 +-
 src/PJ_putp6.c                  |   2 +-
 src/PJ_robin.c                  |   2 +-
 src/PJ_sch.c                    |   2 +-
 src/PJ_sconics.c                |   2 +-
 src/PJ_somerc.c                 |   2 +-
 src/PJ_stere.c                  |   2 +-
 src/PJ_sterea.c                 |   2 +-
 src/PJ_tcc.c                    |   2 +-
 src/PJ_times.c                  |   2 +-
 src/PJ_tmerc.c                  |   2 +-
 src/PJ_tpeqd.c                  |   2 +-
 src/PJ_urm5.c                   |   2 +-
 src/PJ_urmfps.c                 |   2 +-
 src/PJ_vandg.c                  |   2 +-
 src/aasincos.c                  |   2 +-
 src/bch2bps.c                   |   2 +-
 src/bchgen.c                    |   2 +-
 src/biveval.c                   |   2 +-
 src/cct.c                       |   2 +-
 src/dmstor.c                    |   2 +-
 src/emess.c                     |   2 +-
 src/geodesic.c                  |  49 +-
 src/geodesic.h                  |   2 +-
 src/geodtest.c                  |   3 +-
 src/gie.c                       |  28 +-
 src/mk_cheby.c                  |   2 +-
 src/nad_init.c                  |   2 +-
 src/nad_intr.c                  |   2 +-
 src/pj_apply_vgridshift.c       |   6 +-
 src/pj_auth.c                   |   2 +-
 src/pj_ctx.c                    |   2 +-
 src/pj_datum_set.c              |   2 +-
 src/pj_datums.c                 |   2 +-
 src/pj_ell_set.c                |   2 +-
 src/pj_errno.c                  |   2 +-
 src/pj_factors.c                |   2 +-
 src/pj_fileapi.c                |  42 +-
 src/pj_fwd.c                    |  51 ++-
 src/pj_gauss.c                  |   6 +-
 src/pj_gc_reader.c              |  16 +-
 src/pj_geocent.c                |   2 +-
 src/pj_gridcatalog.c            |   2 +-
 src/pj_gridinfo.c               |  45 +-
 src/pj_gridlist.c               |   2 +-
 src/pj_init.c                   |  17 +-
 src/pj_initcache.c              |   2 +-
 src/pj_internal.c               |   8 +-
 src/pj_inv.c                    |  51 ++-
 src/pj_log.c                    |   2 +-
 src/pj_malloc.c                 |   2 +-
 src/pj_mlfn.c                   |   2 +-
 src/pj_msfn.c                   |   2 +-
 src/pj_mutex.c                  |  26 +-
 src/pj_open_lib.c               |   2 +-
 src/pj_phi2.c                   |   2 +-
 src/pj_pr_list.c                |   2 +-
 src/pj_qsfn.c                   |   2 +-
 src/pj_release.c                |  15 +-
 src/pj_strtod.c                 |   6 +-
 src/pj_transform.c              | 713 ++++++++++++++++-------------
 src/pj_tsfn.c                   |   2 +-
 src/pj_units.c                  |   2 +-
 src/pj_utils.c                  |   2 +-
 src/pj_zpoly1.c                 |   2 +-
 src/proj.h                      |   6 +-
 src/proj_4D_api.c               |  49 +-
 src/proj_api.h                  |   2 +-
 src/proj_etmerc.c               |   2 +-
 src/proj_internal.h             |   6 +-
 src/proj_mdist.c                |   2 +-
 src/proj_rouss.c                |   2 +-
 src/rtodms.c                    |   2 +-
 src/test228.c                   |   2 +-
 src/vector1.c                   |   2 +-
 test-driver                     |   6 +-
 test/Makefile.in                |  16 +-
 test/gie/4D-API_cs2cs-style.gie |  55 +++
 test/gie/Makefile.in            |  14 +-
 test/gigs/5111.1.gie            |   2 +-
 test/gigs/Makefile.in           |  14 +-
 164 files changed, 3340 insertions(+), 2029 deletions(-)

diff --git a/CMakeLists.txt b/CMakeLists.txt
index 1d1baef..6c43ab9 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -33,6 +33,18 @@ elseif("${CMAKE_C_COMPILER_ID}" MATCHES "Clang")
     -Wfloat-conversion ${CMAKE_C_FLAGS}")
 endif()
 
+# Tell Intel compiler to do arithmetic accurately.  This is needed to
+# stop the compiler from ignoring parentheses in expressions like
+# (a + b) + c and from simplifying 0.0 + x to x (which is wrong if
+# x = -0.0).
+if (CMAKE_C_COMPILER_ID STREQUAL "Intel")
+  if (MSVC)
+    set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /fp:precise")
+  else ()
+    set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fp-model precise")
+  endif ()
+endif ()
+
 #################################################################################
 # PROJ4 CMake modules
 #################################################################################
@@ -51,7 +63,7 @@ colormsg(_HIBLUE_ "Configuring PROJ:")
 include(Proj4Version)
 proj_version(MAJOR 5 MINOR 0 PATCH 0)
 set(PROJ_API_VERSION "13")
-set(PROJ_BUILD_VERSION "13.0.1")
+set(PROJ_BUILD_VERSION "13.1.0")
 
 #################################################################################
 # Build features and variants
diff --git a/Makefile.in b/Makefile.in
index f0c11a9..82162d1 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.15.1 from Makefile.am.
+# Makefile.in generated by automake 1.16 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994-2017 Free Software Foundation, Inc.
+# Copyright (C) 1994-2018 Free Software Foundation, Inc.
 
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -91,6 +91,7 @@ host_triplet = @host@
 subdir = .
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/m4/ax_cflags_warn_all.m4 \
+	$(top_srcdir)/m4/ax_check_compile_flag.m4 \
 	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
 	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
 	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/configure.ac
@@ -167,7 +168,7 @@ am__recursive_targets = \
   $(RECURSIVE_CLEAN_TARGETS) \
   $(am__extra_recursive_targets)
 AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \
-	cscope distdir dist dist-all distcheck
+	cscope distdir distdir-am dist dist-all distcheck
 am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
 # Read a list of newline-separated strings from the standard input,
 # and print each of them once, without duplicates.  Input order is
@@ -383,8 +384,8 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	    echo ' $(SHELL) ./config.status'; \
 	    $(SHELL) ./config.status;; \
 	  *) \
-	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \
-	    cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \
+	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__maybe_remake_depfiles)'; \
+	    cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__maybe_remake_depfiles);; \
 	esac;
 
 $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
@@ -534,7 +535,10 @@ distclean-tags:
 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
 	-rm -f cscope.out cscope.in.out cscope.po.out cscope.files
 
-distdir: $(DISTFILES)
+distdir: $(BUILT_SOURCES)
+	$(MAKE) $(AM_MAKEFLAGS) distdir-am
+
+distdir-am: $(DISTFILES)
 	$(am__remove_distdir)
 	test -d "$(distdir)" || mkdir "$(distdir)"
 	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
diff --git a/NEWS b/NEWS
index 56970a8..77fc9bb 100644
--- a/NEWS
+++ b/NEWS
@@ -1,3 +1,54 @@
+5.0.1 Release Notes
+-------------------
+
+ BUG FIXES
+ ------------
+
+ All bug fix numbers refer to issues or pull requests indexed at
+ https://github.com/OSGeo/proj.4/
+
+ o Handle ellipsoid change correctly in pipelines when
+   +towgs84=0,0,0 is set #881
+
+ o Handle the case where nad_ctable2_init returns NULL #883
+
+ o Avoid shadowed declaration errors with old gcc #880
+
+ o Expand +datum properly +datum in pipelines #872
+
+ o Fail gracefully when incorrect headers are encountered in grid
+   files #875
+
+ o Improve roundtrip stability in pipelines using +towgs84 #871
+
+ o Fixed typo in gie error codes #861
+
+ o Numerical stability fixes to the geodesic package #826 #843
+
+ o Make sure that transient errors are returned correctly #857
+
+ o Make sure that locally installed header files are not used when
+   building PROJ #849
+
+ o Fix inconsistent parameter names in proj.h/proj_4D_api.c #842
+
+ o Make sure +vunits is applied #833
+
+ o Fix incorrect Web Mercator transformations #834
+
+ THANKS TO
+ ------------
+
+ Version 5.0.1 is made possible by the following contributors:
+
+   Mike Toews
+   Kurt Schwehr
+   Even Rouault
+   Charles Karney
+   Thomas Knudsen
+   Kristian Evers
+
+
 5.0.0 Release Notes
 -------------------
 
diff --git a/aclocal.m4 b/aclocal.m4
index e4d264c..6c8807c 100644
--- a/aclocal.m4
+++ b/aclocal.m4
@@ -1,6 +1,6 @@
-# generated automatically by aclocal 1.15.1 -*- Autoconf -*-
+# generated automatically by aclocal 1.16 -*- Autoconf -*-
 
-# Copyright (C) 1996-2017 Free Software Foundation, Inc.
+# Copyright (C) 1996-2018 Free Software Foundation, Inc.
 
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -20,7 +20,7 @@ You have another version of autoconf.  It may work, but is not guaranteed to.
 If you have problems, you may need to regenerate the build system entirely.
 To do so, use the procedure documented by the package, typically 'autoreconf'.])])
 
-# Copyright (C) 2002-2017 Free Software Foundation, Inc.
+# Copyright (C) 2002-2018 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -32,10 +32,10 @@ To do so, use the procedure documented by the package, typically 'autoreconf'.])
 # generated from the m4 files accompanying Automake X.Y.
 # (This private macro should not be called outside this file.)
 AC_DEFUN([AM_AUTOMAKE_VERSION],
-[am__api_version='1.15'
+[am__api_version='1.16'
 dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to
 dnl require some minimum version.  Point them to the right macro.
-m4_if([$1], [1.15.1], [],
+m4_if([$1], [1.16], [],
       [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl
 ])
 
@@ -51,14 +51,14 @@ m4_define([_AM_AUTOCONF_VERSION], [])
 # Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced.
 # This function is AC_REQUIREd by AM_INIT_AUTOMAKE.
 AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION],
-[AM_AUTOMAKE_VERSION([1.15.1])dnl
+[AM_AUTOMAKE_VERSION([1.16])dnl
 m4_ifndef([AC_AUTOCONF_VERSION],
   [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
 _AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))])
 
 # AM_AUX_DIR_EXPAND                                         -*- Autoconf -*-
 
-# Copyright (C) 2001-2017 Free Software Foundation, Inc.
+# Copyright (C) 2001-2018 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -110,7 +110,7 @@ am_aux_dir=`cd "$ac_aux_dir" && pwd`
 
 # AM_CONDITIONAL                                            -*- Autoconf -*-
 
-# Copyright (C) 1997-2017 Free Software Foundation, Inc.
+# Copyright (C) 1997-2018 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -141,7 +141,7 @@ AC_CONFIG_COMMANDS_PRE(
 Usually this means the macro was only invoked conditionally.]])
 fi])])
 
-# Copyright (C) 1999-2017 Free Software Foundation, Inc.
+# Copyright (C) 1999-2018 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -332,13 +332,12 @@ _AM_SUBST_NOTMAKE([am__nodep])dnl
 
 # Generate code to set up dependency tracking.              -*- Autoconf -*-
 
-# Copyright (C) 1999-2017 Free Software Foundation, Inc.
+# Copyright (C) 1999-2018 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
 
-
 # _AM_OUTPUT_DEPENDENCY_COMMANDS
 # ------------------------------
 AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS],
@@ -346,49 +345,41 @@ AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS],
   # Older Autoconf quotes --file arguments for eval, but not when files
   # are listed without --file.  Let's play safe and only enable the eval
   # if we detect the quoting.
-  case $CONFIG_FILES in
-  *\'*) eval set x "$CONFIG_FILES" ;;
-  *)   set x $CONFIG_FILES ;;
-  esac
+  # TODO: see whether this extra hack can be removed once we start
+  # requiring Autoconf 2.70 or later.
+  AS_CASE([$CONFIG_FILES],
+          [*\'*], [eval set x "$CONFIG_FILES"],
+          [*], [set x $CONFIG_FILES])
   shift
-  for mf
+  # Used to flag and report bootstrapping failures.
+  am_rc=0
+  for am_mf
   do
     # Strip MF so we end up with the name of the file.
-    mf=`echo "$mf" | sed -e 's/:.*$//'`
-    # Check whether this is an Automake generated Makefile or not.
-    # We used to match only the files named 'Makefile.in', but
-    # some people rename them; so instead we look at the file content.
-    # Grep'ing the first line is not enough: some people post-process
-    # each Makefile.in and add a new line on top of each file to say so.
-    # Grep'ing the whole file is not good either: AIX grep has a line
+    am_mf=`AS_ECHO(["$am_mf"]) | sed -e 's/:.*$//'`
+    # Check whether this is an Automake generated Makefile which includes
+    # dependency-tracking related rules and includes.
+    # Grep'ing the whole file directly is not great: AIX grep has a line
     # limit of 2048, but all sed's we know have understand at least 4000.
-    if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then
-      dirpart=`AS_DIRNAME("$mf")`
-    else
-      continue
-    fi
-    # Extract the definition of DEPDIR, am__include, and am__quote
-    # from the Makefile without running 'make'.
-    DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"`
-    test -z "$DEPDIR" && continue
-    am__include=`sed -n 's/^am__include = //p' < "$mf"`
-    test -z "$am__include" && continue
-    am__quote=`sed -n 's/^am__quote = //p' < "$mf"`
-    # Find all dependency output files, they are included files with
-    # $(DEPDIR) in their names.  We invoke sed twice because it is the
-    # simplest approach to changing $(DEPDIR) to its actual value in the
-    # expansion.
-    for file in `sed -n "
-      s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \
-	 sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g'`; do
-      # Make sure the directory exists.
-      test -f "$dirpart/$file" && continue
-      fdir=`AS_DIRNAME(["$file"])`
-      AS_MKDIR_P([$dirpart/$fdir])
-      # echo "creating $dirpart/$file"
-      echo '# dummy' > "$dirpart/$file"
-    done
+    sed -n 's,^am--depfiles:.*,X,p' "$am_mf" | grep X >/dev/null 2>&1 \
+      || continue
+    am_dirpart=`AS_DIRNAME(["$am_mf"])`
+    am_filepart=`AS_BASENAME(["$am_mf"])`
+    AM_RUN_LOG([cd "$am_dirpart" \
+      && sed -e '/# am--include-marker/d' "$am_filepart" \
+        | $MAKE -f - am--depfiles]) || am_rc=$?
   done
+  if test $am_rc -ne 0; then
+    AC_MSG_FAILURE([Something went wrong bootstrapping makefile fragments
+    for automatic dependency tracking.  Try re-running configure with the
+    '--disable-dependency-tracking' option to at least be able to build
+    the package (albeit without support for automatic dependency tracking).])
+  fi
+  AS_UNSET([am_dirpart])
+  AS_UNSET([am_filepart])
+  AS_UNSET([am_mf])
+  AS_UNSET([am_rc])
+  rm -f conftest-deps.mk
 }
 ])# _AM_OUTPUT_DEPENDENCY_COMMANDS
 
@@ -397,18 +388,17 @@ AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS],
 # -----------------------------
 # This macro should only be invoked once -- use via AC_REQUIRE.
 #
-# This code is only required when automatic dependency tracking
-# is enabled.  FIXME.  This creates each '.P' file that we will
-# need in order to bootstrap the dependency handling code.
+# This code is only required when automatic dependency tracking is enabled.
+# This creates each '.Po' and '.Plo' makefile fragment that we'll need in
+# order to bootstrap the dependency handling code.
 AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS],
 [AC_CONFIG_COMMANDS([depfiles],
      [test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS],
-     [AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"])
-])
+     [AMDEP_TRUE="$AMDEP_TRUE" MAKE="${MAKE-make}"])])
 
 # Do all the work for Automake.                             -*- Autoconf -*-
 
-# Copyright (C) 1996-2017 Free Software Foundation, Inc.
+# Copyright (C) 1996-2018 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -495,8 +485,8 @@ AC_REQUIRE([AM_PROG_INSTALL_STRIP])dnl
 AC_REQUIRE([AC_PROG_MKDIR_P])dnl
 # For better backward compatibility.  To be removed once Automake 1.9.x
 # dies out for good.  For more background, see:
-# <http://lists.gnu.org/archive/html/automake/2012-07/msg00001.html>
-# <http://lists.gnu.org/archive/html/automake/2012-07/msg00014.html>
+# <https://lists.gnu.org/archive/html/automake/2012-07/msg00001.html>
+# <https://lists.gnu.org/archive/html/automake/2012-07/msg00014.html>
 AC_SUBST([mkdir_p], ['$(MKDIR_P)'])
 # We need awk for the "check" target (and possibly the TAP driver).  The
 # system "awk" is bad on some platforms.
@@ -563,7 +553,7 @@ END
 Aborting the configuration process, to ensure you take notice of the issue.
 
 You can download and install GNU coreutils to get an 'rm' implementation
-that behaves properly: <http://www.gnu.org/software/coreutils/>.
+that behaves properly: <https://www.gnu.org/software/coreutils/>.
 
 If you want to complete the configuration process using your problematic
 'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM
@@ -605,7 +595,7 @@ for _am_header in $config_headers :; do
 done
 echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count])
 
-# Copyright (C) 2001-2017 Free Software Foundation, Inc.
+# Copyright (C) 2001-2018 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -626,7 +616,7 @@ if test x"${install_sh+set}" != xset; then
 fi
 AC_SUBST([install_sh])])
 
-# Copyright (C) 2003-2017 Free Software Foundation, Inc.
+# Copyright (C) 2003-2018 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -647,7 +637,7 @@ AC_SUBST([am__leading_dot])])
 
 # Check to see how 'make' treats includes.	            -*- Autoconf -*-
 
-# Copyright (C) 2001-2017 Free Software Foundation, Inc.
+# Copyright (C) 2001-2018 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -655,49 +645,42 @@ AC_SUBST([am__leading_dot])])
 
 # AM_MAKE_INCLUDE()
 # -----------------
-# Check to see how make treats includes.
+# Check whether make has an 'include' directive that can support all
+# the idioms we need for our automatic dependency tracking code.
 AC_DEFUN([AM_MAKE_INCLUDE],
-[am_make=${MAKE-make}
-cat > confinc << 'END'
+[AC_MSG_CHECKING([whether ${MAKE-make} supports the include directive])
+cat > confinc.mk << 'END'
 am__doit:
-	@echo this is the am__doit target
+	@echo this is the am__doit target >confinc.out
 .PHONY: am__doit
 END
-# If we don't find an include directive, just comment out the code.
-AC_MSG_CHECKING([for style of include used by $am_make])
 am__include="#"
 am__quote=
-_am_result=none
-# First try GNU make style include.
-echo "include confinc" > confmf
-# Ignore all kinds of additional output from 'make'.
-case `$am_make -s -f confmf 2> /dev/null` in #(
-*the\ am__doit\ target*)
-  am__include=include
-  am__quote=
-  _am_result=GNU
-  ;;
-esac
-# Now try BSD make style include.
-if test "$am__include" = "#"; then
-   echo '.include "confinc"' > confmf
-   case `$am_make -s -f confmf 2> /dev/null` in #(
-   *the\ am__doit\ target*)
-     am__include=.include
-     am__quote="\""
-     _am_result=BSD
-     ;;
-   esac
-fi
-AC_SUBST([am__include])
-AC_SUBST([am__quote])
-AC_MSG_RESULT([$_am_result])
-rm -f confinc confmf
-])
+# BSD make does it like this.
+echo '.include "confinc.mk" # ignored' > confmf.BSD
+# Other make implementations (GNU, Solaris 10, AIX) do it like this.
+echo 'include confinc.mk # ignored' > confmf.GNU
+_am_result=no
+for s in GNU BSD; do
+  AM_RUN_LOG([${MAKE-make} -f confmf.$s && cat confinc.out])
+  AS_CASE([$?:`cat confinc.out 2>/dev/null`],
+      ['0:this is the am__doit target'],
+      [AS_CASE([$s],
+          [BSD], [am__include='.include' am__quote='"'],
+          [am__include='include' am__quote=''])])
+  if test "$am__include" != "#"; then
+    _am_result="yes ($s style)"
+    break
+  fi
+done
+rm -f confinc.* confmf.*
+AC_MSG_RESULT([${_am_result}])
+AC_SUBST([am__include])])
+AC_SUBST([am__quote])])
 
 # Fake the existence of programs that GNU maintainers use.  -*- Autoconf -*-
 
-# Copyright (C) 1997-2017 Free Software Foundation, Inc.
+# Copyright (C) 1997-2018 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -738,7 +721,7 @@ fi
 # Obsolete and "removed" macros, that must however still report explicit
 # error messages when used, to smooth transition.
 #
-# Copyright (C) 1996-2017 Free Software Foundation, Inc.
+# Copyright (C) 1996-2018 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -765,7 +748,7 @@ AU_DEFUN([fp_C_PROTOTYPES], [AM_C_PROTOTYPES])
 
 # Helper functions for option handling.                     -*- Autoconf -*-
 
-# Copyright (C) 2001-2017 Free Software Foundation, Inc.
+# Copyright (C) 2001-2018 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -794,7 +777,7 @@ AC_DEFUN([_AM_SET_OPTIONS],
 AC_DEFUN([_AM_IF_OPTION],
 [m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])])
 
-# Copyright (C) 1999-2017 Free Software Foundation, Inc.
+# Copyright (C) 1999-2018 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -841,7 +824,7 @@ AC_LANG_POP([C])])
 # For backward compatibility.
 AC_DEFUN_ONCE([AM_PROG_CC_C_O], [AC_REQUIRE([AC_PROG_CC])])
 
-# Copyright (C) 2001-2017 Free Software Foundation, Inc.
+# Copyright (C) 2001-2018 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -860,7 +843,7 @@ AC_DEFUN([AM_RUN_LOG],
 
 # Check to make sure that the build environment is sane.    -*- Autoconf -*-
 
-# Copyright (C) 1996-2017 Free Software Foundation, Inc.
+# Copyright (C) 1996-2018 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -941,7 +924,7 @@ AC_CONFIG_COMMANDS_PRE(
 rm -f conftest.file
 ])
 
-# Copyright (C) 2009-2017 Free Software Foundation, Inc.
+# Copyright (C) 2009-2018 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -1001,7 +984,7 @@ AC_SUBST([AM_BACKSLASH])dnl
 _AM_SUBST_NOTMAKE([AM_BACKSLASH])dnl
 ])
 
-# Copyright (C) 2001-2017 Free Software Foundation, Inc.
+# Copyright (C) 2001-2018 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -1029,7 +1012,7 @@ fi
 INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s"
 AC_SUBST([INSTALL_STRIP_PROGRAM])])
 
-# Copyright (C) 2006-2017 Free Software Foundation, Inc.
+# Copyright (C) 2006-2018 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -1048,7 +1031,7 @@ AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)])
 
 # Check how to create a tarball.                            -*- Autoconf -*-
 
-# Copyright (C) 2004-2017 Free Software Foundation, Inc.
+# Copyright (C) 2004-2018 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -1180,6 +1163,7 @@ AC_SUBST([am__untar])
 ]) # _AM_PROG_TAR
 
 m4_include([m4/ax_cflags_warn_all.m4])
+m4_include([m4/ax_check_compile_flag.m4])
 m4_include([m4/libtool.m4])
 m4_include([m4/ltoptions.m4])
 m4_include([m4/ltsugar.m4])
diff --git a/cmake/Makefile.in b/cmake/Makefile.in
index be8acb7..affcfc4 100644
--- a/cmake/Makefile.in
+++ b/cmake/Makefile.in
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.15.1 from Makefile.am.
+# Makefile.in generated by automake 1.16 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994-2017 Free Software Foundation, Inc.
+# Copyright (C) 1994-2018 Free Software Foundation, Inc.
 
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -90,6 +90,7 @@ host_triplet = @host@
 subdir = cmake
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/m4/ax_cflags_warn_all.m4 \
+	$(top_srcdir)/m4/ax_check_compile_flag.m4 \
 	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
 	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
 	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/configure.ac
@@ -275,8 +276,8 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	  *config.status*) \
 	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
 	  *) \
-	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
-	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \
+	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \
 	esac;
 
 $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
@@ -300,7 +301,10 @@ ctags CTAGS:
 cscope cscopelist:
 
 
-distdir: $(DISTFILES)
+distdir: $(BUILT_SOURCES)
+	$(MAKE) $(AM_MAKEFLAGS) distdir-am
+
+distdir-am: $(DISTFILES)
 	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
 	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
 	list='$(DISTFILES)'; \
diff --git a/compile b/compile
index 2ab71e4..0bb9d0f 100755
--- a/compile
+++ b/compile
@@ -1,9 +1,9 @@
 #! /bin/sh
 # Wrapper for compilers which do not understand '-c -o'.
 
-scriptversion=2016-01-11.22; # UTC
+scriptversion=2017-09-16.17; # UTC
 
-# Copyright (C) 1999-2017 Free Software Foundation, Inc.
+# Copyright (C) 1999-2018 Free Software Foundation, Inc.
 # Written by Tom Tromey <tromey at cygnus.com>.
 #
 # This program is free software; you can redistribute it and/or modify
@@ -17,7 +17,7 @@ scriptversion=2016-01-11.22; # UTC
 # GNU General Public License for more details.
 #
 # You should have received a copy of the GNU General Public License
-# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+# along with this program.  If not, see <https://www.gnu.org/licenses/>.
 
 # As a special exception to the GNU General Public License, if you
 # distribute this file as part of a program that contains a
diff --git a/configure b/configure
index f10bbe4..d8f8d42 100755
--- a/configure
+++ b/configure
@@ -1,6 +1,6 @@
 #! /bin/sh
 # Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.69 for PROJ.4 Projections 5.0.0.
+# Generated by GNU Autoconf 2.69 for PROJ.4 Projections 5.0.1.
 #
 # Report bugs to <https://github.com/OSGeo/proj.4/issues>.
 #
@@ -590,8 +590,8 @@ MAKEFLAGS=
 # Identity of this package.
 PACKAGE_NAME='PROJ.4 Projections'
 PACKAGE_TARNAME='proj'
-PACKAGE_VERSION='5.0.0'
-PACKAGE_STRING='PROJ.4 Projections 5.0.0'
+PACKAGE_VERSION='5.0.1'
+PACKAGE_STRING='PROJ.4 Projections 5.0.1'
 PACKAGE_BUGREPORT='https://github.com/OSGeo/proj.4/issues'
 PACKAGE_URL=''
 
@@ -677,7 +677,6 @@ am__nodep
 AMDEPBACKSLASH
 AMDEP_FALSE
 AMDEP_TRUE
-am__quote
 am__include
 DEPDIR
 OBJEXT
@@ -751,7 +750,8 @@ PACKAGE_VERSION
 PACKAGE_TARNAME
 PACKAGE_NAME
 PATH_SEPARATOR
-SHELL'
+SHELL
+am__quote'
 ac_subst_files=''
 ac_user_opts='
 enable_option_checking
@@ -1318,7 +1318,7 @@ if test "$ac_init_help" = "long"; then
   # Omit some internal or obsolete options to make the list less imposing.
   # This message is too long to be a string in the A/UX 3.1 sh.
   cat <<_ACEOF
-\`configure' configures PROJ.4 Projections 5.0.0 to adapt to many kinds of systems.
+\`configure' configures PROJ.4 Projections 5.0.1 to adapt to many kinds of systems.
 
 Usage: $0 [OPTION]... [VAR=VALUE]...
 
@@ -1388,7 +1388,7 @@ fi
 
 if test -n "$ac_init_help"; then
   case $ac_init_help in
-     short | recursive ) echo "Configuration of PROJ.4 Projections 5.0.0:";;
+     short | recursive ) echo "Configuration of PROJ.4 Projections 5.0.1:";;
    esac
   cat <<\_ACEOF
 
@@ -1501,7 +1501,7 @@ fi
 test -n "$ac_init_help" && exit $ac_status
 if $ac_init_version; then
   cat <<\_ACEOF
-PROJ.4 Projections configure 5.0.0
+PROJ.4 Projections configure 5.0.1
 generated by GNU Autoconf 2.69
 
 Copyright (C) 2012 Free Software Foundation, Inc.
@@ -1916,7 +1916,7 @@ cat >config.log <<_ACEOF
 This file contains any messages produced by compilers while
 running configure, to aid debugging if configure makes a mistake.
 
-It was created by PROJ.4 Projections $as_me 5.0.0, which was
+It was created by PROJ.4 Projections $as_me 5.0.1, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   $ $0 $@
@@ -2301,7 +2301,7 @@ ac_config_sub="$SHELL $ac_aux_dir/config.sub"  # Please don't use this var.
 ac_configure="$SHELL $ac_aux_dir/configure"  # Please don't use this var.
 
 
-am__api_version='1.15'
+am__api_version='1.16'
 
 # Find a good install program.  We prefer a C program (faster),
 # so one script is as good as another.  But avoid the broken or
@@ -2787,7 +2787,7 @@ fi
 
 # Define the identity of the package.
  PACKAGE='proj'
- VERSION='5.0.0'
+ VERSION='5.0.1'
 
 
 cat >>confdefs.h <<_ACEOF
@@ -2817,8 +2817,8 @@ MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"}
 
 # For better backward compatibility.  To be removed once Automake 1.9.x
 # dies out for good.  For more background, see:
-# <http://lists.gnu.org/archive/html/automake/2012-07/msg00001.html>
-# <http://lists.gnu.org/archive/html/automake/2012-07/msg00014.html>
+# <https://lists.gnu.org/archive/html/automake/2012-07/msg00001.html>
+# <https://lists.gnu.org/archive/html/automake/2012-07/msg00014.html>
 mkdir_p='$(MKDIR_P)'
 
 # We need awk for the "check" target (and possibly the TAP driver).  The
@@ -2869,7 +2869,7 @@ END
 Aborting the configuration process, to ensure you take notice of the issue.
 
 You can download and install GNU coreutils to get an 'rm' implementation
-that behaves properly: <http://www.gnu.org/software/coreutils/>.
+that behaves properly: <https://www.gnu.org/software/coreutils/>.
 
 If you want to complete the configuration process using your problematic
 'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM
@@ -2887,45 +2887,45 @@ DEPDIR="${am__leading_dot}deps"
 
 ac_config_commands="$ac_config_commands depfiles"
 
-
-am_make=${MAKE-make}
-cat > confinc << 'END'
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} supports the include directive" >&5
+$as_echo_n "checking whether ${MAKE-make} supports the include directive... " >&6; }
+cat > confinc.mk << 'END'
 am__doit:
-	@echo this is the am__doit target
+	@echo this is the am__doit target >confinc.out
 .PHONY: am__doit
 END
-# If we don't find an include directive, just comment out the code.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for style of include used by $am_make" >&5
-$as_echo_n "checking for style of include used by $am_make... " >&6; }
 am__include="#"
 am__quote=
-_am_result=none
-# First try GNU make style include.
-echo "include confinc" > confmf
-# Ignore all kinds of additional output from 'make'.
-case `$am_make -s -f confmf 2> /dev/null` in #(
-*the\ am__doit\ target*)
-  am__include=include
-  am__quote=
-  _am_result=GNU
-  ;;
-esac
-# Now try BSD make style include.
-if test "$am__include" = "#"; then
-   echo '.include "confinc"' > confmf
-   case `$am_make -s -f confmf 2> /dev/null` in #(
-   *the\ am__doit\ target*)
-     am__include=.include
-     am__quote="\""
-     _am_result=BSD
+# BSD make does it like this.
+echo '.include "confinc.mk" # ignored' > confmf.BSD
+# Other make implementations (GNU, Solaris 10, AIX) do it like this.
+echo 'include confinc.mk # ignored' > confmf.GNU
+_am_result=no
+for s in GNU BSD; do
+  { echo "$as_me:$LINENO: ${MAKE-make} -f confmf.$s && cat confinc.out" >&5
+   (${MAKE-make} -f confmf.$s && cat confinc.out) >&5 2>&5
+   ac_status=$?
+   echo "$as_me:$LINENO: \$? = $ac_status" >&5
+   (exit $ac_status); }
+  case $?:`cat confinc.out 2>/dev/null` in #(
+  '0:this is the am__doit target') :
+    case $s in #(
+  BSD) :
+    am__include='.include' am__quote='"' ;; #(
+  *) :
+    am__include='include' am__quote='' ;;
+esac ;; #(
+  *) :
      ;;
-   esac
-fi
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $_am_result" >&5
-$as_echo "$_am_result" >&6; }
-rm -f confinc confmf
+esac
+  if test "$am__include" != "#"; then
+    _am_result="yes ($s style)"
+    break
+  fi
+done
+rm -f confinc.* confmf.*
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: ${_am_result}" >&5
+$as_echo "${_am_result}" >&6; }
 
 # Check whether --enable-dependency-tracking was given.
 if test "${enable_dependency_tracking+set}" = set; then :
@@ -12979,6 +12979,41 @@ $as_echo "#define STDC_HEADERS 1" >>confdefs.h
 fi
 
 
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts -fp-model precise" >&5
+$as_echo_n "checking whether C compiler accepts -fp-model precise... " >&6; }
+if ${ax_cv_check_cflags__Werror__fp_model_precise+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+  ax_check_save_flags=$CFLAGS
+  CFLAGS="$CFLAGS -Werror -fp-model precise"
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ax_cv_check_cflags__Werror__fp_model_precise=yes
+else
+  ax_cv_check_cflags__Werror__fp_model_precise=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+  CFLAGS=$ax_check_save_flags
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_check_cflags__Werror__fp_model_precise" >&5
+$as_echo "$ax_cv_check_cflags__Werror__fp_model_precise" >&6; }
+if test "x$ax_cv_check_cflags__Werror__fp_model_precise" = xyes; then :
+  CFLAGS="$CFLAGS -fp-model precise"
+else
+  :
+fi
+
 save_CFLAGS="$CFLAGS"
 CFLAGS="$CFLAGS -Wall -Werror"
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for C99 math functions" >&5
@@ -13816,7 +13851,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
 # report actual input values of CONFIG_FILES etc. instead of their
 # values after options handling.
 ac_log="
-This file was extended by PROJ.4 Projections $as_me 5.0.0, which was
+This file was extended by PROJ.4 Projections $as_me 5.0.1, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
@@ -13882,7 +13917,7 @@ _ACEOF
 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
 ac_cs_version="\\
-PROJ.4 Projections config.status 5.0.0
+PROJ.4 Projections config.status 5.0.1
 configured by $0, generated by GNU Autoconf 2.69,
   with options \\"\$ac_cs_config\\"
 
@@ -14001,7 +14036,7 @@ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
 #
 # INIT-COMMANDS
 #
-AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"
+AMDEP_TRUE="$AMDEP_TRUE" MAKE="${MAKE-make}"
 
 
 # The HP-UX ksh and POSIX shell print the target directory to stdout
@@ -14911,29 +14946,35 @@ $as_echo "$as_me: executing $ac_file commands" >&6;}
   # Older Autoconf quotes --file arguments for eval, but not when files
   # are listed without --file.  Let's play safe and only enable the eval
   # if we detect the quoting.
-  case $CONFIG_FILES in
-  *\'*) eval set x "$CONFIG_FILES" ;;
-  *)   set x $CONFIG_FILES ;;
-  esac
+  # TODO: see whether this extra hack can be removed once we start
+  # requiring Autoconf 2.70 or later.
+  case $CONFIG_FILES in #(
+  *\'*) :
+    eval set x "$CONFIG_FILES" ;; #(
+  *) :
+    set x $CONFIG_FILES ;; #(
+  *) :
+     ;;
+esac
   shift
-  for mf
+  # Used to flag and report bootstrapping failures.
+  am_rc=0
+  for am_mf
   do
     # Strip MF so we end up with the name of the file.
-    mf=`echo "$mf" | sed -e 's/:.*$//'`
-    # Check whether this is an Automake generated Makefile or not.
-    # We used to match only the files named 'Makefile.in', but
-    # some people rename them; so instead we look at the file content.
-    # Grep'ing the first line is not enough: some people post-process
-    # each Makefile.in and add a new line on top of each file to say so.
-    # Grep'ing the whole file is not good either: AIX grep has a line
+    am_mf=`$as_echo "$am_mf" | sed -e 's/:.*$//'`
+    # Check whether this is an Automake generated Makefile which includes
+    # dependency-tracking related rules and includes.
+    # Grep'ing the whole file directly is not great: AIX grep has a line
     # limit of 2048, but all sed's we know have understand at least 4000.
-    if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then
-      dirpart=`$as_dirname -- "$mf" ||
-$as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
-	 X"$mf" : 'X\(//\)[^/]' \| \
-	 X"$mf" : 'X\(//\)$' \| \
-	 X"$mf" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X"$mf" |
+    sed -n 's,^am--depfiles:.*,X,p' "$am_mf" | grep X >/dev/null 2>&1 \
+      || continue
+    am_dirpart=`$as_dirname -- "$am_mf" ||
+$as_expr X"$am_mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+	 X"$am_mf" : 'X\(//\)[^/]' \| \
+	 X"$am_mf" : 'X\(//\)$' \| \
+	 X"$am_mf" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$am_mf" |
     sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
 	    s//\1/
 	    q
@@ -14951,53 +14992,48 @@ $as_echo X"$mf" |
 	    q
 	  }
 	  s/.*/./; q'`
-    else
-      continue
-    fi
-    # Extract the definition of DEPDIR, am__include, and am__quote
-    # from the Makefile without running 'make'.
-    DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"`
-    test -z "$DEPDIR" && continue
-    am__include=`sed -n 's/^am__include = //p' < "$mf"`
-    test -z "$am__include" && continue
-    am__quote=`sed -n 's/^am__quote = //p' < "$mf"`
-    # Find all dependency output files, they are included files with
-    # $(DEPDIR) in their names.  We invoke sed twice because it is the
-    # simplest approach to changing $(DEPDIR) to its actual value in the
-    # expansion.
-    for file in `sed -n "
-      s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \
-	 sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g'`; do
-      # Make sure the directory exists.
-      test -f "$dirpart/$file" && continue
-      fdir=`$as_dirname -- "$file" ||
-$as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
-	 X"$file" : 'X\(//\)[^/]' \| \
-	 X"$file" : 'X\(//\)$' \| \
-	 X"$file" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X"$file" |
-    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
-	    s//\1/
-	    q
-	  }
-	  /^X\(\/\/\)[^/].*/{
+    am_filepart=`$as_basename -- "$am_mf" ||
+$as_expr X/"$am_mf" : '.*/\([^/][^/]*\)/*$' \| \
+	 X"$am_mf" : 'X\(//\)$' \| \
+	 X"$am_mf" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X/"$am_mf" |
+    sed '/^.*\/\([^/][^/]*\)\/*$/{
 	    s//\1/
 	    q
 	  }
-	  /^X\(\/\/\)$/{
+	  /^X\/\(\/\/\)$/{
 	    s//\1/
 	    q
 	  }
-	  /^X\(\/\).*/{
+	  /^X\/\(\/\).*/{
 	    s//\1/
 	    q
 	  }
 	  s/.*/./; q'`
-      as_dir=$dirpart/$fdir; as_fn_mkdir_p
-      # echo "creating $dirpart/$file"
-      echo '# dummy' > "$dirpart/$file"
-    done
+    { echo "$as_me:$LINENO: cd "$am_dirpart" \
+      && sed -e '/# am--include-marker/d' "$am_filepart" \
+        | $MAKE -f - am--depfiles" >&5
+   (cd "$am_dirpart" \
+      && sed -e '/# am--include-marker/d' "$am_filepart" \
+        | $MAKE -f - am--depfiles) >&5 2>&5
+   ac_status=$?
+   echo "$as_me:$LINENO: \$? = $ac_status" >&5
+   (exit $ac_status); } || am_rc=$?
   done
+  if test $am_rc -ne 0; then
+    { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "Something went wrong bootstrapping makefile fragments
+    for automatic dependency tracking.  Try re-running configure with the
+    '--disable-dependency-tracking' option to at least be able to build
+    the package (albeit without support for automatic dependency tracking).
+See \`config.log' for more details" "$LINENO" 5; }
+  fi
+  { am_dirpart=; unset am_dirpart;}
+  { am_filepart=; unset am_filepart;}
+  { am_mf=; unset am_mf;}
+  { am_rc=; unset am_rc;}
+  rm -f conftest-deps.mk
 }
  ;;
     "libtool":C)
diff --git a/configure.ac b/configure.ac
index 898d8b3..8bc39b2 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1,7 +1,7 @@
 dnl Process this file with autoconf to produce a configure script.
 
 AC_PREREQ(2.59)
-AC_INIT([PROJ.4 Projections], 5.0.0, [https://github.com/OSGeo/proj.4/issues], proj)
+AC_INIT([PROJ.4 Projections], 5.0.1, [https://github.com/OSGeo/proj.4/issues], proj)
 AC_CONFIG_MACRO_DIR([m4])
 AC_LANG(C)
 
@@ -29,6 +29,12 @@ CFLAGS="$save_CFLAGS"
 dnl We check for headers
 AC_HEADER_STDC
 
+dnl Check flag for accurate arithmetic with Intel compiler.  This is
+dnl needed to stop the compiler from ignoring parentheses in expressions
+dnl like (a + b) + c and from simplifying 0.0 + x to x (which is wrong if
+dnl x = -0.0).
+AX_CHECK_COMPILE_FLAG([-fp-model precise],
+        [CFLAGS="$CFLAGS -fp-model precise"],,[-Werror])
 dnl Check for C99 math functions
 save_CFLAGS="$CFLAGS"
 CFLAGS="$CFLAGS -Wall -Werror"
@@ -107,8 +113,8 @@ dnl posix mutexes for instance).
 dnl ---------------------------------------------------------------------------
 
 AC_ARG_WITH([mutex],
-	    AS_HELP_STRING([--without-mutex],
-	       [Disable real mutex locks (lacking pthreads)]),,)
+            AS_HELP_STRING([--without-mutex],
+               [Disable real mutex locks (lacking pthreads)]),,)
 
 AC_MSG_CHECKING([for mutexes])
 THREAD_LIB=""
diff --git a/depcomp b/depcomp
index b39f98f..49eb4bf 100755
--- a/depcomp
+++ b/depcomp
@@ -1,9 +1,9 @@
 #! /bin/sh
 # depcomp - compile a program generating dependencies as side-effects
 
-scriptversion=2016-01-11.22; # UTC
+scriptversion=2017-09-16.17; # UTC
 
-# Copyright (C) 1999-2017 Free Software Foundation, Inc.
+# Copyright (C) 1999-2018 Free Software Foundation, Inc.
 
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -16,7 +16,7 @@ scriptversion=2016-01-11.22; # UTC
 # GNU General Public License for more details.
 
 # You should have received a copy of the GNU General Public License
-# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+# along with this program.  If not, see <https://www.gnu.org/licenses/>.
 
 # As a special exception to the GNU General Public License, if you
 # distribute this file as part of a program that contains a
diff --git a/jniwrap/Makefile.in b/jniwrap/Makefile.in
index 0f83f42..fa54574 100644
--- a/jniwrap/Makefile.in
+++ b/jniwrap/Makefile.in
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.15.1 from Makefile.am.
+# Makefile.in generated by automake 1.16 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994-2017 Free Software Foundation, Inc.
+# Copyright (C) 1994-2018 Free Software Foundation, Inc.
 
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -90,6 +90,7 @@ host_triplet = @host@
 subdir = jniwrap
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/m4/ax_cflags_warn_all.m4 \
+	$(top_srcdir)/m4/ax_check_compile_flag.m4 \
 	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
 	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
 	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/configure.ac
@@ -134,7 +135,7 @@ am__recursive_targets = \
   $(RECURSIVE_CLEAN_TARGETS) \
   $(am__extra_recursive_targets)
 AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \
-	distdir
+	distdir distdir-am
 am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
 # Read a list of newline-separated strings from the standard input,
 # and print each of them once, without duplicates.  Input order is
@@ -323,8 +324,8 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	  *config.status*) \
 	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
 	  *) \
-	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
-	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \
+	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \
 	esac;
 
 $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
@@ -441,7 +442,10 @@ cscopelist-am: $(am__tagged_files)
 distclean-tags:
 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
 
-distdir: $(DISTFILES)
+distdir: $(BUILT_SOURCES)
+	$(MAKE) $(AM_MAKEFLAGS) distdir-am
+
+distdir-am: $(DISTFILES)
 	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
 	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
 	list='$(DISTFILES)'; \
diff --git a/jniwrap/org/Makefile.in b/jniwrap/org/Makefile.in
index 82cec42..fd83ebc 100644
--- a/jniwrap/org/Makefile.in
+++ b/jniwrap/org/Makefile.in
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.15.1 from Makefile.am.
+# Makefile.in generated by automake 1.16 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994-2017 Free Software Foundation, Inc.
+# Copyright (C) 1994-2018 Free Software Foundation, Inc.
 
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -90,6 +90,7 @@ host_triplet = @host@
 subdir = jniwrap/org
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/m4/ax_cflags_warn_all.m4 \
+	$(top_srcdir)/m4/ax_check_compile_flag.m4 \
 	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
 	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
 	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/configure.ac
@@ -134,7 +135,7 @@ am__recursive_targets = \
   $(RECURSIVE_CLEAN_TARGETS) \
   $(am__extra_recursive_targets)
 AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \
-	distdir
+	distdir distdir-am
 am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
 # Read a list of newline-separated strings from the standard input,
 # and print each of them once, without duplicates.  Input order is
@@ -322,8 +323,8 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	  *config.status*) \
 	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
 	  *) \
-	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
-	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \
+	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \
 	esac;
 
 $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
@@ -440,7 +441,10 @@ cscopelist-am: $(am__tagged_files)
 distclean-tags:
 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
 
-distdir: $(DISTFILES)
+distdir: $(BUILT_SOURCES)
+	$(MAKE) $(AM_MAKEFLAGS) distdir-am
+
+distdir-am: $(DISTFILES)
 	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
 	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
 	list='$(DISTFILES)'; \
diff --git a/jniwrap/org/proj4/Makefile.in b/jniwrap/org/proj4/Makefile.in
index 28f29bb..1dd12df 100644
--- a/jniwrap/org/proj4/Makefile.in
+++ b/jniwrap/org/proj4/Makefile.in
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.15.1 from Makefile.am.
+# Makefile.in generated by automake 1.16 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994-2017 Free Software Foundation, Inc.
+# Copyright (C) 1994-2018 Free Software Foundation, Inc.
 
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -90,6 +90,7 @@ host_triplet = @host@
 subdir = jniwrap/org/proj4
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/m4/ax_cflags_warn_all.m4 \
+	$(top_srcdir)/m4/ax_check_compile_flag.m4 \
 	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
 	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
 	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/configure.ac
@@ -262,8 +263,8 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	  *config.status*) \
 	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
 	  *) \
-	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
-	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \
+	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \
 	esac;
 
 $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
@@ -287,7 +288,10 @@ ctags CTAGS:
 cscope cscopelist:
 
 
-distdir: $(DISTFILES)
+distdir: $(BUILT_SOURCES)
+	$(MAKE) $(AM_MAKEFLAGS) distdir-am
+
+distdir-am: $(DISTFILES)
 	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
 	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
 	list='$(DISTFILES)'; \
diff --git a/m4/ax_check_compile_flag.m4 b/m4/ax_check_compile_flag.m4
new file mode 100644
index 0000000..dcabb92
--- /dev/null
+++ b/m4/ax_check_compile_flag.m4
@@ -0,0 +1,74 @@
+# ===========================================================================
+#  https://www.gnu.org/software/autoconf-archive/ax_check_compile_flag.html
+# ===========================================================================
+#
+# SYNOPSIS
+#
+#   AX_CHECK_COMPILE_FLAG(FLAG, [ACTION-SUCCESS], [ACTION-FAILURE], [EXTRA-FLAGS], [INPUT])
+#
+# DESCRIPTION
+#
+#   Check whether the given FLAG works with the current language's compiler
+#   or gives an error.  (Warnings, however, are ignored)
+#
+#   ACTION-SUCCESS/ACTION-FAILURE are shell commands to execute on
+#   success/failure.
+#
+#   If EXTRA-FLAGS is defined, it is added to the current language's default
+#   flags (e.g. CFLAGS) when the check is done.  The check is thus made with
+#   the flags: "CFLAGS EXTRA-FLAGS FLAG".  This can for example be used to
+#   force the compiler to issue an error when a bad flag is given.
+#
+#   INPUT gives an alternative input source to AC_COMPILE_IFELSE.
+#
+#   NOTE: Implementation based on AX_CFLAGS_GCC_OPTION. Please keep this
+#   macro in sync with AX_CHECK_{PREPROC,LINK}_FLAG.
+#
+# LICENSE
+#
+#   Copyright (c) 2008 Guido U. Draheim <guidod at gmx.de>
+#   Copyright (c) 2011 Maarten Bosmans <mkbosmans at gmail.com>
+#
+#   This program is free software: you can redistribute it and/or modify it
+#   under the terms of the GNU General Public License as published by the
+#   Free Software Foundation, either version 3 of the License, or (at your
+#   option) any later version.
+#
+#   This program is distributed in the hope that it will be useful, but
+#   WITHOUT ANY WARRANTY; without even the implied warranty of
+#   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
+#   Public License for more details.
+#
+#   You should have received a copy of the GNU General Public License along
+#   with this program. If not, see <https://www.gnu.org/licenses/>.
+#
+#   As a special exception, the respective Autoconf Macro's copyright owner
+#   gives unlimited permission to copy, distribute and modify the configure
+#   scripts that are the output of Autoconf when processing the Macro. You
+#   need not follow the terms of the GNU General Public License when using
+#   or distributing such scripts, even though portions of the text of the
+#   Macro appear in them. The GNU General Public License (GPL) does govern
+#   all other use of the material that constitutes the Autoconf Macro.
+#
+#   This special exception to the GPL applies to versions of the Autoconf
+#   Macro released by the Autoconf Archive. When you make and distribute a
+#   modified version of the Autoconf Macro, you may extend this special
+#   exception to the GPL to apply to your modified version as well.
+
+#serial 5
+
+AC_DEFUN([AX_CHECK_COMPILE_FLAG],
+[AC_PREREQ(2.64)dnl for _AC_LANG_PREFIX and AS_VAR_IF
+AS_VAR_PUSHDEF([CACHEVAR],[ax_cv_check_[]_AC_LANG_ABBREV[]flags_$4_$1])dnl
+AC_CACHE_CHECK([whether _AC_LANG compiler accepts $1], CACHEVAR, [
+  ax_check_save_flags=$[]_AC_LANG_PREFIX[]FLAGS
+  _AC_LANG_PREFIX[]FLAGS="$[]_AC_LANG_PREFIX[]FLAGS $4 $1"
+  AC_COMPILE_IFELSE([m4_default([$5],[AC_LANG_PROGRAM()])],
+    [AS_VAR_SET(CACHEVAR,[yes])],
+    [AS_VAR_SET(CACHEVAR,[no])])
+  _AC_LANG_PREFIX[]FLAGS=$ax_check_save_flags])
+AS_VAR_IF(CACHEVAR,yes,
+  [m4_default([$2], :)],
+  [m4_default([$3], :)])
+AS_VAR_POPDEF([CACHEVAR])dnl
+])dnl AX_CHECK_COMPILE_FLAGS
diff --git a/man/Makefile.in b/man/Makefile.in
index afe5495..1dac002 100644
--- a/man/Makefile.in
+++ b/man/Makefile.in
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.15.1 from Makefile.am.
+# Makefile.in generated by automake 1.16 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994-2017 Free Software Foundation, Inc.
+# Copyright (C) 1994-2018 Free Software Foundation, Inc.
 
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -90,6 +90,7 @@ host_triplet = @host@
 subdir = man
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/m4/ax_cflags_warn_all.m4 \
+	$(top_srcdir)/m4/ax_check_compile_flag.m4 \
 	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
 	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
 	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/configure.ac
@@ -134,7 +135,7 @@ am__recursive_targets = \
   $(RECURSIVE_CLEAN_TARGETS) \
   $(am__extra_recursive_targets)
 AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \
-	distdir
+	distdir distdir-am
 am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
 # Read a list of newline-separated strings from the standard input,
 # and print each of them once, without duplicates.  Input order is
@@ -323,8 +324,8 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	  *config.status*) \
 	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
 	  *) \
-	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
-	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \
+	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \
 	esac;
 
 $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
@@ -441,7 +442,10 @@ cscopelist-am: $(am__tagged_files)
 distclean-tags:
 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
 
-distdir: $(DISTFILES)
+distdir: $(BUILT_SOURCES)
+	$(MAKE) $(AM_MAKEFLAGS) distdir-am
+
+distdir-am: $(DISTFILES)
 	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
 	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
 	list='$(DISTFILES)'; \
diff --git a/man/man1/Makefile.in b/man/man1/Makefile.in
index 6028bab..fc43d89 100644
--- a/man/man1/Makefile.in
+++ b/man/man1/Makefile.in
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.15.1 from Makefile.am.
+# Makefile.in generated by automake 1.16 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994-2017 Free Software Foundation, Inc.
+# Copyright (C) 1994-2018 Free Software Foundation, Inc.
 
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -90,6 +90,7 @@ host_triplet = @host@
 subdir = man/man1
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/m4/ax_cflags_warn_all.m4 \
+	$(top_srcdir)/m4/ax_check_compile_flag.m4 \
 	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
 	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
 	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/configure.ac
@@ -294,8 +295,8 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	  *config.status*) \
 	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
 	  *) \
-	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
-	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \
+	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \
 	esac;
 
 $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
@@ -362,7 +363,10 @@ ctags CTAGS:
 cscope cscopelist:
 
 
-distdir: $(DISTFILES)
+distdir: $(BUILT_SOURCES)
+	$(MAKE) $(AM_MAKEFLAGS) distdir-am
+
+distdir-am: $(DISTFILES)
 	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
 	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
 	list='$(DISTFILES)'; \
diff --git a/man/man1/cct.1 b/man/man1/cct.1
index d055310..9b63135 100644
--- a/man/man1/cct.1
+++ b/man/man1/cct.1
@@ -1,112 +1,226 @@
-.\" release 5
-.\"
-.ad b
-.hy 1
-.TH CCT 1 "2018/02/25 Rel. 5.0.0"
+.\" Man page generated from reStructuredText.
+.
+.TH "CCT" "1" "Apr 1, 2018" "5.0.1" "PROJ.4"
 .SH NAME
-cct \- 4D equivalent to the "proj" projection program
+cct \- Coordinate Conversion and Transformation
+.
+.nr rst2man-indent-level 0
+.
+.de1 rstReportMargin
+\\$1 \\n[an-margin]
+level \\n[rst2man-indent-level]
+level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
+-
+\\n[rst2man-indent0]
+\\n[rst2man-indent1]
+\\n[rst2man-indent2]
+..
+.de1 INDENT
+.\" .rstReportMargin pre:
+. RS \\$1
+. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin]
+. nr rst2man-indent-level +1
+.\" .rstReportMargin post:
+..
+.de UNINDENT
+. RE
+.\" indent \\n[an-margin]
+.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]]
+.nr rst2man-indent-level -1
+.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
+.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
+..
 .SH SYNOPSIS
-.B cct
-[\-options]... [+operator_specs]... infile...
+.INDENT 0.0
+.INDENT 3.5
+\fBcct\fP [ \fB\-cotvz\fP [ args ] ] \fI+opts[=arg]\fP  file[s]
+.UNINDENT
+.UNINDENT
 .SH DESCRIPTION
-.I cct
-is a 4D equivalent to the proj(1) projection program.
-.PP
-cct is an acronym meaning "Coordinate Conversion and Transformation".
-.PP
-The acronym refers to definitions given in the OGC 08-015r2/ISO-19111
-standard "Geographical Information -- Spatial Referencing by Coordinates",
-which defines two different classes of coordinate operations:
-.PP
-*Coordinate Conversions*, which are coordinate operations where input
+.sp
+\fBcct\fP a 4D equivalent to the \fBproj\fP projection program,
+performs transformation coordinate systems on a set of input points.  The
+coordinate system transformation can include  translation  between projected
+and geographic coordinates as well as the application of datum shifts.
+.sp
+The following control parameters can  appear  in any order:
+.INDENT 0.0
+.TP
+.B \-c <x,y,z,t>
+Specify input columns for (up to) 4 input parameters. Defaults to 1,2,3,4.
+.UNINDENT
+.INDENT 0.0
+.TP
+.B \-o <output file name>, \-\-output=<output file name>
+Specify the name of the output file.
+.UNINDENT
+.INDENT 0.0
+.TP
+.B \-t <time>, \-\-time=<time>
+Specify a fixed observation time to be used for all input data.
+.UNINDENT
+.INDENT 0.0
+.TP
+.B \-z <height>, \-\-height=<height>
+Specify a fixed observation height to be used for all input data.
+.UNINDENT
+.INDENT 0.0
+.TP
+.B \-v, \-\-verbose
+Write non\-essential, but potentially useful, information to stderr.
+Repeat for additional information (\fB\-vv\fP, \fB\-vvv\fP, etc.)
+.UNINDENT
+.sp
+The \fI+args\fP arguments are associated with coordinate operation parameters.
+Usage varies with operation.
+.sp
+\fBcct\fP is an acronym meaning \fICoordinate Conversion and Transformation\fP\&.
+.sp
+The acronym refers to definitions given in the OGC 08\-015r2/ISO\-19111
+standard “Geographical Information – Spatial Referencing by Coordinates”,
+which defines two different classes of \fIcoordinate operations\fP:
+.sp
+\fICoordinate Conversions\fP, which are coordinate operations where input
 and output datum are identical (e.g. conversion from geographical to
 cartesian coordinates) and
-.PP
-*Coordinate Transformations*, which are coordinate operations where
+.sp
+\fICoordinate Transformations\fP, which are coordinate operations where
 input and output datums differ (e.g. change of reference frame).
-.PP
-\fBcct\fR, however, also refers to Carl Christian Tscherning (1942--2014),
+.SH EXAMPLES
+.INDENT 0.0
+.IP 1. 3
+The operator specs describe the action to be performed by \fBcct\fP\&. So
+the following script
+.UNINDENT
+.INDENT 0.0
+.INDENT 3.5
+.sp
+.nf
+.ft C
+echo 12 55 0 0 | cct +proj=utm +zone=32 +ellps=GRS80
+.ft P
+.fi
+.UNINDENT
+.UNINDENT
+.sp
+will transform the input geographic coordinates into UTM zone 32 coordinates.
+Hence, the command
+.INDENT 0.0
+.INDENT 3.5
+.sp
+.nf
+.ft C
+echo 12 55 | cct \-z0 \-t0 +proj=utm +zone=32 +ellps=GRS80
+.ft P
+.fi
+.UNINDENT
+.UNINDENT
+.sp
+Should give results comparable to the classic proj command
+.INDENT 0.0
+.INDENT 3.5
+.sp
+.nf
+.ft C
+echo 12 55 | proj +proj=utm +zone=32 +ellps=GRS80
+.ft P
+.fi
+.UNINDENT
+.UNINDENT
+.INDENT 0.0
+.IP 2. 3
+Convert geographical input to UTM zone 32 on the GRS80 ellipsoid:
+.UNINDENT
+.INDENT 0.0
+.INDENT 3.5
+.sp
+.nf
+.ft C
+cct +proj=utm +ellps=GRS80 +zone=32
+.ft P
+.fi
+.UNINDENT
+.UNINDENT
+.INDENT 0.0
+.IP 3. 3
+Roundtrip accuracy check for the case above:
+.UNINDENT
+.INDENT 0.0
+.INDENT 3.5
+.sp
+.nf
+.ft C
+cct +proj=pipeline +proj=utm +ellps=GRS80 +zone=32 +step +step +inv
+.ft P
+.fi
+.UNINDENT
+.UNINDENT
+.INDENT 0.0
+.IP 4. 3
+As (2) but specify input columns for longitude, latitude, height and time:
+.UNINDENT
+.INDENT 0.0
+.INDENT 3.5
+.sp
+.nf
+.ft C
+cct \-c 5,2,1,4  +proj=utm +ellps=GRS80 +zone=32
+.ft P
+.fi
+.UNINDENT
+.UNINDENT
+.INDENT 0.0
+.IP 5. 3
+As (2) but specify fixed height and time, hence needing only 2 cols in
+input:
+.UNINDENT
+.INDENT 0.0
+.INDENT 3.5
+.sp
+.nf
+.ft C
+cct \-t 0 \-z 0  +proj=utm  +ellps=GRS80  +zone=32
+.ft P
+.fi
+.UNINDENT
+.UNINDENT
+.SH BACKGROUND
+.sp
+\fBcct\fP also refers to Carl Christian Tscherning (1942–2014),
 professor of Geodesy at the University of Copenhagen, mentor and advisor
 for a generation of Danish geodesists, colleague and collaborator for
 two generations of global geodesists, Secretary General for the
-International Association of Geodesy, IAG (1995--2007), fellow of the
+International Association of Geodesy, IAG (1995–2007), fellow of the
 American Geophysical Union (1991), recipient of the IAG Levallois Medal
 (2007), the European Geosciences Union Vening Meinesz Medal (2008), and
 of numerous other honours.
-.PP
-cct, or Christian, as he was known to most of us, was recognized for his
+.sp
+\fIcct\fP, or Christian, as he was known to most of us, was recognized for his
 good mood, his sharp wit, his tireless work, and his great commitment to
-the development of geodesy - both through his scientific contributions,
+the development of geodesy – both through his scientific contributions,
 comprising more than 250 publications, and by his mentoring and teaching
 of the next generations of geodesists.
-.PP
+.sp
 As Christian was an avid Fortran programmer, and a keen Unix connoisseur,
 he would have enjoyed to know that his initials would be used to name a
 modest Unix style transformation filter, hinting at the tireless aspect
 of his personality, which was certainly one of the reasons he accomplished
 so much, and meant so much to so many people.
-.PP
-Hence, in honour of cct (the geodesist) this is cct (the program).
-.SH OPTIONS
-.IP "\fB\fB\-o /path/to/file\fR\fR" 1c
-Specify output file name\&
-.IP "\fB\fB\-c x,y,z,t\fR\fR" 1c
-Specify input columns for (up to) 4 input parameters.
-Defaults to 1,2,3,4\&
-.IP "\fB\fB\-z value\fR\fR" 1c
-Provide a fixed z value for all input data (e.g. \-z 0)\&
-.IP "\fB\fB\-t value\fR\fR" 1c
-Provide a fixed t value for all input data (e.g. \-t 0)\&
-.IP "\fB\fB\-I\fR\fR" 1c
-Do the inverse transformation\&
-.IP "\fB\fB\-v\fR\fR" 1c
-Verbose: Provide non-essential informational output.
-Repeat \-v for more verbosity (e.g. \-vv)\&
-.SH LONG OPTIONS
-.IP "\fB\fB\-\-output\fR\fR" 1c
-Alias for \-o\&
-.IP "\fB\fB\-\-columns\fR\fR" 1c
-Alias for \-c\&
-.IP "\fB\fB\-\-height\fR\fR" 1c
-Alias for \-z\&
-.IP "\fB\fB\-\-time\fR\fR" 1c
-Alias for \-t\&
-.IP "\fB\fB\-\-verbose\fR\fR" 1c
-Alias for \-v\&
-.IP "\fB\fB\-\-inverse\fR\fR" 1c
-Alias for \-I\&
-.IP "\fB\fB\-\-help\fR\fR" 1c
-Alias for -h\&
-.SH OPERATOR SPECS
-The operator specs describe the action to be performed by cct, e.g:
-.IP
-+proj=utm  +ellps=GRS80  +zone=32
-.PP
-instructs cct to convert input data to Universal Transverse Mercator, zone 32
-coordinates, based on the GRS80 ellipsoid.
-.PP
-Hence, the command
-.IP
-echo 12 55 | cct -z0 -t0 +proj=utm +zone=32 +ellps=GRS80
-.PP
-Should give results comparable to the classic proj command
-.IP
-echo 12 55 | proj +proj=utm +zone=32 +ellps=GRS80
-.SH EXAMPLES
-1. convert geographical input to UTM zone 32 on the GRS80 ellipsoid:
-.IP
-cct +proj=utm +ellps=GRS80 +zone=32
-.PP
-2. roundtrip accuracy check for the case above:
-.IP
-cct +proj=pipeline +proj=utm +ellps=GRS80 +zone=32 +step +step +inv
-.PP
-3. as (1) but specify input columns for longitude, latitude, height and time:
-.IP
-cct -c 5,2,1,4  +proj=utm +ellps=GRS80 +zone=32
-.PP
-4. as (1) but specify fixed height and time, hence needing only 2 cols in input:
-.IP
-cct -t 0 -z 0  +proj=utm  +ellps=GRS80  +zone=32
+.sp
+Hence, in honour of \fIcct\fP (the geodesist) this is \fBcct\fP (the program).
+.SH SEE ALSO
+.sp
+\fBproj(1)\fP, \fBcs2cs(1)\fP, \fBgeod(1)\fP, \fBgie(1)\fP
+.SH BUGS
+.sp
+A list of know bugs can be found at \fI\%http://github.com/OSGeo/proj.4/issues\fP
+where new bug reports can be submitted to.
 .SH HOME PAGE
-http://proj4.org/
+.sp
+\fI\%http://proj4.org/\fP
+.SH AUTHOR
+Thomas Knudsen
+.SH COPYRIGHT
+1983-2018
+.\" Generated by docutils manpage writer.
+.
diff --git a/man/man1/cs2cs.1 b/man/man1/cs2cs.1
index 27ecd1b..3df6020 100644
--- a/man/man1/cs2cs.1
+++ b/man/man1/cs2cs.1
@@ -1,205 +1,220 @@
-.\" release 5
-.\"
-.ad b
-.hy 1
-.TH CS2CS 1 "2018/02/15 Rel. 5.0.0"
+.\" Man page generated from reStructuredText.
+.
+.TH "CS2CS" "1" "Apr 1, 2018" "5.0.1" "PROJ.4"
 .SH NAME
-cs2cs \- cartographic coordinate system filter
+cs2cs \- Cartographic coordinate system filter
+.
+.nr rst2man-indent-level 0
+.
+.de1 rstReportMargin
+\\$1 \\n[an-margin]
+level \\n[rst2man-indent-level]
+level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
+-
+\\n[rst2man-indent0]
+\\n[rst2man-indent1]
+\\n[rst2man-indent2]
+..
+.de1 INDENT
+.\" .rstReportMargin pre:
+. RS \\$1
+. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin]
+. nr rst2man-indent-level +1
+.\" .rstReportMargin post:
+..
+.de UNINDENT
+. RE
+.\" indent \\n[an-margin]
+.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]]
+.nr rst2man-indent-level -1
+.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
+.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
+..
 .SH SYNOPSIS
-.B cs2cs
-[
-.B \-eEfIlrstvwW
-[
-.I args
-] ] [
-.B +opts[=arg]
-]
-.br
-      [ \fB+to\fR [\fB+opts\fR[\fB=arg\fR]] ]
-file[s]
+.INDENT 0.0
+.INDENT 3.5
+\fBcs2cs\fP [ \fB\-eEfIlrstvwW\fP [ args ] ] [ \fI+opts[=arg]\fP ] [ +to [\fI+opts[=arg]\fP] ] file[s]
+.UNINDENT
+.UNINDENT
 .SH DESCRIPTION
-.I Cs2cs
-performs transformation between the source and destination cartographic
-coordinate system on a set of input points.  The coordinate system
-transformation can include translation between projected and geographic
-coordinates as well as the application of datum shifts.
-.PP
-The following control parameters can appear in any order:
+.sp
+\fBcs2cs\fP performs transformation between the source and destination
+cartographic  coordinate  system on a set of input points.  The coordinate
+system transformation can include  translation  between projected  and
+geographic coordinates as well as the application of datum shifts.
+.sp
+The following control parameters can  appear  in any order:
+.INDENT 0.0
 .TP
-.BI \-I
-method to specify inverse translation, convert from \fB+to\fR coordinate
-system to the primary coordinate system defined.
+.B \-I
+method to specify inverse translation, convert from \fI+to\fP coordinate system to
+the primary coordinate system defined.
+.UNINDENT
+.INDENT 0.0
 .TP
-.BI \-t "a"
-.I A
-specifies a character employed as the first character to denote
-a control line to be passed through without processing.
-This option applicable to ascii input only.
-(# is the default value).
+.B \-t<a>
+A specifies a character employed as the first character to denote a control
+line to  be passed through without processing. This option  applicable  to
+ascii  input only. (# is the default value).
+.UNINDENT
+.INDENT 0.0
 .TP
-.BI \-e " string"
-.I String
-is an arbitrary string to be output if an error is detected during
-data transformations.
-The default value is: *\et*.
-Note that if the
-.B \-b,
-.B \-i
-or
-.B \-o
-options are employed, an error is returned as HUGE_VAL
-value for both return values.
+.B \-e <string>
+String is an arbitrary string to be output if an error is detected  during
+data transformations. The  default value is: \fIt\fP\&. Note that if the \-b, \-i
+or \-o options are employed, an error is returned as HUGE_VAL value for both
+return values.
+.UNINDENT
+.INDENT 0.0
 .TP
-.BI \-E
-causes the input coordinates to be copied to the output line
-prior to printing the converted values.
+.B \-E
+causes the input coordinates to be copied to the output line prior to
+printing  the converted values.
+.UNINDENT
+.INDENT 0.0
+.TP
+.B \-l<[=id]>
+List projection identifiers that can be selected with \fI+proj\fP\&. \fBcs2cs \-l=id\fP
+gives expanded description of projection id, e.g. \fBcs2cs \-l=merc\fP\&.
+.UNINDENT
+.INDENT 0.0
 .TP
-.BI \-l "[p|P|=|e|u|d]" id
-List projection identifiers with
-.B \-l,
 .B \-lp
-or
-.B \-lP (expanded)
-that can be selected with
-.B +proj.
-.BI \-l= id
-gives expanded description of projection
-.I id.
-List ellipsoid identifiers with
-.B \-le,
-that can be selected with
-.B +ellps,
+List of all projection id that can be used with the \fI+proj\fP parameter.
+Equivalent to \fBcs2cs \-l\fP\&.
+.UNINDENT
+.INDENT 0.0
+.TP
+.B \-lP
+Expanded description of all projections that can be used with the \fI+proj\fP
+parameter.
+.UNINDENT
+.INDENT 0.0
+.TP
+.B \-le
+List of all ellipsoids that can be selected with the \fI+ellps\fP parameters.
+.UNINDENT
+.INDENT 0.0
+.TP
 .B \-lu
-list of cartesian to meter conversion factors
-that can be selected with
-.B +units
-or
+List of all distance units that can be selected with the \fI+units\fP parameter.
+.UNINDENT
+.INDENT 0.0
+.TP
 .B \-ld
-list of datums that can be selected with
-.B +datum.
+List of datums that can be selected with the \fI+datum\fP parameter.
+.UNINDENT
+.INDENT 0.0
 .TP
-.BI \-r
-This options reverses the order of the
-expected input from longitude-latitude or x-y to latitude-longitude or y-x.
+.B \-r
+This options reverses the order of the expected input from
+longitude\-latitude or x\-y to latitude\-longitude or y\-x.
+.UNINDENT
+.INDENT 0.0
 .TP
-.BI \-s
-This options reverses the order of the
-output from x-y or longitude-latitude to y-x or latitude-longitude.
+.B \-s
+This options reverses the order of the output from x\-y or longitude\-latitude
+to y\-x or latitude\-longitude.
+.UNINDENT
+.INDENT 0.0
 .TP
-.BI \-f " format"
-.I Format
-is a
-.I printf
-format string to control the form of the output values.
-For inverse projections, the output will be in degrees when this option
-is employed.
-If a format is specified for inverse projection the
-output data will be in decimal degrees.
-The default format is "%.2f" for forward projection and DMS
-for inverse.
+.B \-f <format>
+Format is a printf format string to control the form of the output values.
+For inverse projections, the output will be in degrees when this option is
+employed.  If a format is specified for inverse projection the output data
+will be in deci\- mal  degrees. The default format is “%.2f” for forward
+projection and DMS for inverse.
+.UNINDENT
+.INDENT 0.0
 .TP
-.BI \-[w|W] n
-.I N
-is the number of significant fractional digits to employ for
-seconds output (when the option is not specified,
-.B \-w3
-is assumed).
-When
-.B \-W
-is employed the fields will be constant width and with leading zeroes.
+.B \-[w|W]<n>
+N is the number of significant fractional digits to employ for seconds
+output (when the option is not specified, \-w3 is assumed). When \-W is
+employed the fields will be constant width and with leading zeroes.
+.UNINDENT
+.INDENT 0.0
 .TP
 .B \-v
-causes a listing of cartographic control parameters tested for and
-used by the program to be printed prior to input data.
-.PP
-The
-.B +args
-run-line arguments are associated with cartographic parameters
-and usage varies with projection and for a complete description see
-.I "Cartographic Projection Procedures for the UNIX Environment\(emA User's Manual"
-and supplementary documentation for Release 4.
-.PP
-The \fIcs2cs\fR program requires two coordinate system definitions.  The
-first (or primary is defined based on all projection parameters not
-appearing after the \fB+to\fR argument.  All projection parameters
-appearing after the \fB+to\fR argument are considered the definition
-of the second coordinate system.  If there is no second coordinate system
-defined, a geographic coordinate system based on the datum and ellipsoid of
-the source coordinate system is assumed.  Note that the source and destination
-coordinate system can both be projections, both be geographic, or one of
-each and may have the same or different datums.
-.PP
-Additional projection control parameters may be contained in two
-auxiliary control files:
-the first is optionally referenced with the
-.BI +init= file:id
-and the second is always processed after the name
-of the projection has been established from either the run-line
-or the contents of
-.B +init
-file.
-The environment parameter
-.B PROJ_LIB
-establishes the default directory for a file reference without
-an absolute path.  This is also used for supporting files like
-datum shift files.
-.PP
-One or more
-.I files
-(processed in left to right order)
-specify the source of data to be transformed.
-A \- will specify the location of processing standard input.
-If no files are specified, the input is assumed to be from
-.I stdin.
-For input data the two data values must be in the
-first two white space separated fields and
-when both input and output are ASCII all trailing portions
+causes a listing of cartographic control parameters tested for and used by
+the program to be printed prior to input data.
+.UNINDENT
+.sp
+The \fI+args\fP run\-line arguments are associated with cartographic
+parameters.
+.sp
+The \fBcs2cs\fP program requires two coordinate system definitions.  The first (or
+primary  is  defined based on all projection parameters not appearing after the
+\fI+to\fP argument.  All projection  parameters appearing  after the \fI+to\fP argument
+are considered the definition of the second  coordinate system.  If there is no
+second coordinate system defined, a geographic coordinate system based on the
+datum and ellipsoid of the source coordinate system is assumed.  Note  that  the
+source  and destination  coordinate  system can both be projections, both be
+geographic, or one of each and may have the same or different datums.
+.sp
+Additional  projection control parameters may be contained in two auxiliary
+control  files:  the first   is   optionally   referenced   with  the
+\fI+init=file:id\fP and the second is always processed after the name of the
+projection has been established from either the run\-line or the  contents of
+\fI+init\fP   file.   The  environment  parameter PROJ_LIB establishes the default
+directory for a file  reference  without an absolute path.  This is also used
+for  supporting  files  like  datum shift files.
+.sp
+One  or  more  files (processed in left to right order) specify the source of
+data to  be  transformed.  A \fB\-\fP will specify the location of processing standard
+input.  If no files are  specified,  the  input  is  assumed to be from stdin.
+For input data the two data values  must  be  in the  first  two white space
+separated fields and when both input and output are ASCII all  trailing portions
 of the input line are appended to the output line.
-.PP
-Input geographic data
-(longitude and latitude) must be in DMS or decimal degrees format and input
-cartesian data must be in units consistent with the ellipsoid
-major axis or sphere radius units.
-Output geographic coordinates will normally be in DMS format (use
-.B \-f %.12f
-for decimal degrees with 12 decimal places), while
-projected (cartesian) coordinates will be in linear (meter, feet) units.
-
+.sp
+Input geographic data (longitude  and  latitude) must  be  in  DMS  or decimal
+degrees format and input cartesian data must be in units consistent with  the
+ellipsoid major axis or sphere radius units.  Output geographic coordinates will
+normally be in DMS format (use \fB\-f %.12f\fP for decimal degrees with 12 decimal
+places), while projected (cartesian)   coordinates   will  be  in  linear
+(meter, feet) units.
 .SH EXAMPLE
+.sp
 The following script
-.RS 5
- \f(CWcs2cs +proj=latlong +datum=NAD83
-       +to +proj=utm +zone=10 +datum=NAD27 \-r <<EOF
- 45d15'33.1"	111.5W
- 45d15.551666667N	\-111d30
- +45.25919444444	111d30'000w
- EOF\fR
-.RE
-will transform the input NAD83 geographic coordinates into NAD27 coordinates
-in the UTM projection with zone 10 selected.
-The geographic values of this example are equivalent and meant
-as examples of various forms of DMS input.
+.INDENT 0.0
+.INDENT 3.5
+.sp
+.nf
+.ft C
+cs2cs +proj=latlong +datum=NAD83 +to +proj=utm +zone=10  +datum=NAD27 \-r
+<<EOF 45d15\(aq33.1"   111.5W 45d15.551666667N   \-111d30 +45.25919444444
+111d30\(aq000w EOF
+.ft P
+.fi
+.UNINDENT
+.UNINDENT
+.sp
+will  transform the input NAD83 geographic coordinates into NAD27 coordinates in
+the  UTM  projection  with  zone 10 selected.  The geographic values of this
+example are equivalent and  meant as  examples of various forms of DMS input.
 The x\-y output data will appear as three lines of:
-.RS 5
- \f(CW1402285.99      5076292.42 0.000
-.RE
+.INDENT 0.0
+.INDENT 3.5
+.sp
+.nf
+.ft C
+1402285.99      5076292.42 0.000
+.ft P
+.fi
+.UNINDENT
+.UNINDENT
 .SH SEE ALSO
-.B proj(1),
-.br
-.I "Cartographic Projection Procedures for the UNIX Environment\(emA User's Manual,"
-(Evenden, 1990, Open-file report 90\-284).
-.br
-.I "Map Projections Used by the U. S. Geological Survey"
-(Snyder, 1984,
-USGS Bulletin 1532).
-.br
-.I "Map Projections\(emA Working Manual"
-(Snyder, 1988, USGS Prof. Paper 1395).
-.br
-.I "An Album of Map Projections"
-(Snyder & Voxland, 1989, USGS Prof. Paper 1453).
+.sp
+\fBproj(1)\fP, \fBcct(1)\fP, \fBgeod(1)\fP, \fBgie(1)\fP
 .SH BUGS
-A list of known bugs can found at https://github.com/OSGeo/proj.4/issues
-where new bug reports can be submitted too.
+.sp
+A list of know bugs can be found at \fI\%http://github.com/OSGeo/proj.4/issues\fP
+where new bug reports can be submitted to.
 .SH HOME PAGE
-http://proj4.org/
+.sp
+\fI\%http://proj4.org/\fP
+.SH AUTHOR
+Frank Warmerdam
+.SH COPYRIGHT
+1983-2018
+.\" Generated by docutils manpage writer.
+.
diff --git a/man/man1/geod.1 b/man/man1/geod.1
index 59185f0..2d39569 100644
--- a/man/man1/geod.1
+++ b/man/man1/geod.1
@@ -1,231 +1,262 @@
-.\" @(#)geod.1
-.\"
-.ad b
-.hy 1
-.TH GEOD 1 "2018/02/15 Rel. 5.0.0"
+.\" Man page generated from reStructuredText.
+.
+.TH "GEOD" "1" "Apr 1, 2018" "5.0.1" "PROJ.4"
 .SH NAME
-geod \- direct geodesic computations
-.br
-invgeod \- inverse geodesic computations
+geod \- Geodesic computations
+.
+.nr rst2man-indent-level 0
+.
+.de1 rstReportMargin
+\\$1 \\n[an-margin]
+level \\n[rst2man-indent-level]
+level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
+-
+\\n[rst2man-indent0]
+\\n[rst2man-indent1]
+\\n[rst2man-indent2]
+..
+.de1 INDENT
+.\" .rstReportMargin pre:
+. RS \\$1
+. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin]
+. nr rst2man-indent-level +1
+.\" .rstReportMargin post:
+..
+.de UNINDENT
+. RE
+.\" indent \\n[an-margin]
+.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]]
+.nr rst2man-indent-level -1
+.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
+.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
+..
 .SH SYNOPSIS
-.B geod
-.B +ellps=<ellipse>
-[
-.B \-afFIlptwW
-[
-.I args
-] ] [
-.B +args
-]
-file[s]
-.br
-.B invgeod
-.B +ellps=<ellipse>
-[
-.B \-afFIlptwW
-[
-.I args
-] ] [
-.B +args
-]
-file[s]
+.INDENT 0.0
+.INDENT 3.5
+\fBgeod\fP \fI+ellps=<ellipse>\fP [ \fB\-afFIlptwW\fP [ args ] ] [ \fI+args\fP ] file[s]
+.sp
+\fBinvgeod\fP \fI+ellps=<ellipse>\fP [ \fB\-afFIlptwW\fP [ args  ]  ]  [ \fI+args\fP  ] file[s]
+.UNINDENT
+.UNINDENT
 .SH DESCRIPTION
-.I geod
-(direct) and
-.I invgeod
-(inverse)
-perform geodesic ("Great Circle") computations for determining
-latitude, longitude and back azimuth of a terminus point
-given a initial point latitude, longitude, azimuth and distance (direct) or
-the forward and back azimuths and distance between an initial and
-terminus point latitudes and longitudes (inverse).  The results are
-accurate to round off for |\fIf\fR| < 1/50, where \fIf\fR is flattening.
-.B invgeod
-may not be available on all platforms; in this case call
-.B geod
-with the
-.B \-I
-option.
-.PP
-The following command-line options can appear in any order:
+.sp
+\fBgeod\fP  (direct)  and  \fBinvgeod\fP (inverse) perform geodesic
+(Great Circle) computations for determining latitude,  longitude  and back
+azimuth  of  a terminus point given a initial point latitude, longitude,
+azimuth and distance (direct) or  the  forward and  back azimuths and distance
+between an initial and terminus point latitudes and  longitudes  (inverse).
+The  results  are accurate  to  round  off for |f| < 1/50, where
+f is flattening.
+.sp
+\fBinvgeod\fP may not be available on all  platforms;  in  this  case
+use \fI\%geod \-I\fP instead.
+.sp
+The following command\-line options can appear in any order:
+.INDENT 0.0
 .TP
 .B \-I
-Specifies that the inverse geodesic computation is to be performed.
-May be used with execution of
-.B geod
-as an alternative to
-.B invgeod
-execution.
+Specifies that the inverse geodesic computation is to be performed. May be
+used with execution of geod as an alternative to invgeod execution.
+.UNINDENT
+.INDENT 0.0
 .TP
 .B \-a
-Latitude and longitudes of the initial and terminal points,
-forward and back azimuths and distance are output.
+Latitude and longitudes of the initial and terminal points, forward and
+back azimuths and distance are  output.
+.UNINDENT
+.INDENT 0.0
 .TP
-.BI \-t "a"
-.I A
-specifies a character employed as the first character to denote
-a control line to be passed through without processing.
+.B \-ta
+A specifies a character employed as the first character to denote a control
+line to be passed through without processing.
+.UNINDENT
+.INDENT 0.0
 .TP
-.BI \-le
+.B \-le
 Gives a listing of all the ellipsoids that may be selected with the
-.B +ellps=
-option.
+\fI+ellps=\fP option.
+.UNINDENT
+.INDENT 0.0
 .TP
-.BI \-lu
-Gives a listing of all the units that may be selected with the
-.B +units=
+.B \-lu
+Gives a listing of all the units that  may  be  selected with the \fI+units=\fP
 option.
+.UNINDENT
+.INDENT 0.0
+.TP
+.B \-f <format>
+Format is a printf format string to control the output form of the
+geographic coordinate values. The default mode is DMS for geographic
+coordinates and “%.3f” for distance.
+.UNINDENT
+.INDENT 0.0
+.TP
+.B \-F <format>
+Format is a printf format string to control the output form of the distance
+value (\fB\-F\fP). The default mode is DMS for geographic coordinates and
+“%.3f” for distance.
+.UNINDENT
+.INDENT 0.0
 .TP
-.BI \-[f|F] " format"
-.I Format
-is a
-.I printf
-format string to control the output form of the geographic coordinate values
-(\fBf\fR) or distance value (\fBF\fR).
-The default mode is DMS for geographic coordinates and "%.3f" for distance.
+.B \-w<n>
+N is the number of significant fractional digits to employ for seconds
+output (when the option is not specified, \fB\-w3\fP is assumed).
+.UNINDENT
+.INDENT 0.0
 .TP
-.BI \-[w|W] n
-.I N
-is the number of significant fractional digits to employ for
-seconds output (when the option is not specified,
-.B \-w3
-is assumed).
-When
-.B \-W
-is employed the fields will be constant width with leading zeroes.
+.B \-W<n>
+N is the number of significant fractional digits to employ for seconds
+output. When \fB\-W\fP is employed the fields will be constant width
+with leading zeroes.
+.UNINDENT
+.INDENT 0.0
 .TP
 .B \-p
-This option causes the azimuthal values to be output as unsigned
-DMS numbers between 0 and 360 degrees.  Also note \-f.
-.PP
-The
-.B +args
-command-line options are associated with geodetic parameters
-for specifying the ellipsoidal or sphere to use.
-See
-.B proj
-documentation for full list of these parameters and controls.
-The options are processed in left to right order
-from the command line.
-Reentry of an option is ignored with the first occurrence assumed to
-be the desired value.
-.PP
-One or more
-.I files
-(processed in left to right order)
-specify the source of data to be transformed.
-A \- will specify the location of processing standard input.
-If no files are specified, the input is assumed to be from
-.I stdin.
-.PP
-For direct determinations input data must be in latitude,
-longitude, azimuth and distance order and output will be
-latitude, longitude and back azimuth of the terminus point.
-Latitude, longitude of the initial and terminus point are
-input for the inverse mode and respective forward and back
-azimuth from the initial and terminus points are output along
-with the distance between the points.
-.PP
-Input geographic coordinates (latitude and longitude) and azimuthal data
-must be in decimal degrees or DMS format and input distance data must be
-in units consistent with the ellipsoid major axis or sphere radius
-units.  The latitude must lie in the range [-90d,90d].  Output
-geographic coordinates will be in DMS (if the
-.B \-f
-switch is not employed) to 0.001"
-with trailing, zero-valued minute-second fields deleted.
-Output distance data will be in the same units as the ellipsoid or
-sphere radius.
-.PP
-The Earth's ellipsoidal figure may be selected in the same
-manner as program
-.B proj
-by using
-.B "+ellps=, +a=, +es=,"
-etc.
-.PP
-.I Geod
-may also be used to determine intermediate points along either
-a geodesic line between two points or along an arc of specified distance
-from a geographic point.
-In both cases an initial point must be specified with
-.BI +lat_1= lat
-and
-.BI +lon_1= lon
-parameters and either a terminus point
-.BI +lat_2= lat
-and
-.BI +lon_2= lon
-or a distance and azimuth from the initial point with
-.BI +S= distance
-and
-.BI +A= azimuth
-must be specified.
-.PP
-If points along a geodesic are to be determined then either
-.BI +n_S= integer
-specifying the number of intermediate points and/or
-.BI +del_S= distance
-specifying the incremental distance between points must be specified.
-.PP
-To determine points along an arc equidistant from the initial point both
-.BI +del_A= angle
-and
-.BI +n_A= integer
-must be specified which determine the respective angular increments
-and number of points to be determined.
-.RE
-.SH EXAMPLE
-The following script determines the geodesic azimuths and distance in
-U.S. statute miles from Boston, MA, to Portland, OR:
-.RS 5
- \f(CWgeod +ellps=clrk66 <<EOF \-I +units=us\-mi
- 42d15'N 71d07'W 45d31'N 123d41'W
- EOF\fR
-.RE
+This option causes the azimuthal values to be output as unsigned DMS
+numbers between 0 and 360 degrees. Also note \fI\%\-f\fP\&.
+.UNINDENT
+.sp
+The  \fI+args\fP  command\-line  options  are associated with geodetic
+parameters for specifying the ellipsoidal  or  sphere  to  use.
+controls.  The options are processed in  left  to  right  order
+from  the  command  line.  Reentry of an option is ignored with
+the first occurrence assumed to be the desired value.
+.sp
+See the PROJ documentation for a full list of these parameters and
+controls.
+.sp
+One or more files (processed in left to  right  order)  specify
+the  source  of  data  to be transformed.  A \fB\-\fP will specify the
+location of processing standard input.  If no files are  specified,
+the input is assumed to be from stdin.
+.sp
+For  direct determinations input data must be in latitude, longitude,
+azimuth and distance order and output will be latitude,
+longitude  and  back  azimuth of the terminus point.  Latitude,
+longitude of the initial and terminus point are input  for  the
+inverse  mode  and respective forward and back azimuth from the
+initial and terminus points are output along with the  distance
+between the points.
+.sp
+Input  geographic  coordinates  (latitude  and  longitude)  and
+azimuthal data must be in decimal degrees  or  DMS  format  and
+input distance data must be in units consistent with the ellipsoid
+major axis or sphere radius units.  The latitude must  lie
+in the range [\-90d,90d].  Output geographic coordinates will be
+in DMS (if the \fI\%\-f\fP switch is not employed) to 0.001” with trailing,
+zero\-valued minute\-second fields deleted.  Output distance
+data will be in the same  units  as  the  ellipsoid  or  sphere
+radius.
+.sp
+The Earth’s ellipsoidal figure may be selected in the same manner
+as program \fBproj\fP by using \fI+ellps=\fP, \fI+a=\fP, \fI+es=\fP, etc.
+.sp
+Geod may also be used to determine  intermediate  points  along
+either  a  geodesic  line between two points or along an arc of
+specified distance from a geographic point.  In both  cases  an
+initial  point must be specified with \fI+lat_1=lat\fP and \fI+lon_1=lon\fP
+parameters  and  either  a  terminus   point   \fI+lat_2=lat\fP   and
+\fI+lon_2=lon\fP  or  a  distance  and azimuth from the initial point
+with \fI+S=distance\fP and \fI+A=azimuth\fP must be specified.
+.sp
+If points along a geodesic are to  be  determined  then  either
+\fI+n_S=integer\fP  specifying  the  number  of  intermediate  points
+and/or  \fI+del_S=distance\fP  specifying  the  incremental  distance
+between points must be specified.
+.sp
+To  determine  points along an arc equidistant from the initial
+point both \fI+del_A=angle\fP  and  \fI+n_A=integer\fP  must  be  specified
+which determine the respective angular increments and number of
+points to be determined.
+.SH EXAMPLES
+.sp
+The following script determines the geodesic azimuths and  distance in U.S.
+statute miles from Boston, MA, to Portland, OR:
+.INDENT 0.0
+.INDENT 3.5
+.sp
+.nf
+.ft C
+geod +ellps=clrk66 <<EOF \-I +units=us\-mi
+42d15\(aqN 71d07\(aqW 45d31\(aqN 123d41\(aqW
+EOF
+.ft P
+.fi
+.UNINDENT
+.UNINDENT
+.sp
 which gives the results:
-.RS 5
- \f(CW-66d31'50.141" 75d39'13.083" 2587.504
-.RE
-where the first two values are the
-azimuth from Boston to Portland, the back azimuth from Portland to
-Boston followed by the distance.
-.PP
-An example of forward geodesic use is to use the Boston location and determine
-Portland's location by azimuth and distance:
-.RS 5
- \f(CWgeod +ellps=clrk66 <<EOF +units=us-mi
- 42d15'N 71d07'W \-66d31'50.141" 2587.504
- EOF\fR
-.RE
+.INDENT 0.0
+.INDENT 3.5
+.sp
+.nf
+.ft C
+\-66d31\(aq50.141" 75d39\(aq13.083" 2587.504
+.ft P
+.fi
+.UNINDENT
+.UNINDENT
+.sp
+where the first two values are the azimuth from Boston to Portland,
+the back azimuth from Portland to Boston followed by the distance.
+.sp
+An  example  of forward geodesic use is to use the Boston location
+and determine Portland’s location by azimuth and distance:
+.INDENT 0.0
+.INDENT 3.5
+.sp
+.nf
+.ft C
+geod +ellps=clrk66 <<EOF +units=us\-mi
+42d15\(aqN 71d07\(aqW \-66d31\(aq50.141" 2587.504
+EOF
+.ft P
+.fi
+.UNINDENT
+.UNINDENT
+.sp
 which gives:
-.RS 5
- \f(CW45d31'0.003"N 123d40'59.985"W 75d39'13.094"\fR
-.RE
-Note: lack of precision in the distance value compromises
-the precision of the Portland location.
+.INDENT 0.0
+.INDENT 3.5
+.sp
+.nf
+.ft C
+45d31\(aq0.003"N 123d40\(aq59.985"W 75d39\(aq13.094"
+.ft P
+.fi
+.UNINDENT
+.UNINDENT
+.sp
+\fBNOTE:\fP
+.INDENT 0.0
+.INDENT 3.5
+Lack  of precision in the distance value compromises the
+precision of the Portland location.
+.UNINDENT
+.UNINDENT
+.SH FURTHER READING
+.INDENT 0.0
+.IP 1. 3
+\fI\%GeographicLib\fP\&.
+.IP 2. 3
+C. F. F. Karney, \fI\%Algorithms for Geodesics\fP, J. Geodesy \fB87\fP(1), 43–55 (2013);
+\fI\%addenda\fP\&.
+.IP 3. 3
+\fI\%A geodesic bibliography\fP\&.
+.UNINDENT
 .SH SEE ALSO
-.B geodesic(3)
-.PP
-\fBGeographicLib\fR, https://geographiclib.sourceforge.io
-.PP
-The \fBGeodSolve\fR utility in GeographicLib.  With the \fB-E\fR option,
-this solves the geodesic problems in terms of elliptic integrals; the
-results are accurate for arbitrary \fIf\fR.
-.PP
-C. F. F. Karney, \fIAlgorithms for Geodesics\fR,
-.br
-J. Geodesy \fB87\fR, 43-55 (2013);
-.br
-DOI: https://doi.org/10.1007/s00190-012-0578-z
-.br
-https://geographiclib.sourceforge.io/geod-addenda.html
-.PP
-The \fIonline geodesic bibliography\fR,
-.br
-https://geographiclib.sourceforge.io/geodesic-papers/biblio.html
+.sp
+\fBproj(1)\fP, \fBcs2cs(1)\fP, \fBcct(1)\fP, \fBgeod(1)\fP, \fBgie(1)\fP
 .SH BUGS
-A list of known bugs can found at https://github.com/OSGeo/proj.4/issues
-where new bug reports can be submitted too.
+.sp
+A list of know bugs can be found at \fI\%http://github.com/OSGeo/proj.4/issues\fP
+where new bug reports can be submitted to.
 .SH HOME PAGE
-http://proj4.org/
+.sp
+\fI\%http://proj4.org/\fP
+.SH AUTHOR
+Charles Karney
+.SH COPYRIGHT
+1983-2018
+.\" Generated by docutils manpage writer.
+.
diff --git a/man/man1/gie.1 b/man/man1/gie.1
index dbe83f9..ff057bd 100644
--- a/man/man1/gie.1
+++ b/man/man1/gie.1
@@ -1,116 +1,379 @@
-.\" release 5
-.\"
-.ad b
-.hy 1
-.TH GIE 1 "2018/02/25 Rel. 5.0.0"
+.\" Man page generated from reStructuredText.
+.
+.TH "GIE" "1" "Apr 1, 2018" "5.0.1" "PROJ.4"
 .SH NAME
 gie \- The Geospatial Integrity Investigation Environment
+.
+.nr rst2man-indent-level 0
+.
+.de1 rstReportMargin
+\\$1 \\n[an-margin]
+level \\n[rst2man-indent-level]
+level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
+-
+\\n[rst2man-indent0]
+\\n[rst2man-indent1]
+\\n[rst2man-indent2]
+..
+.de1 INDENT
+.\" .rstReportMargin pre:
+. RS \\$1
+. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin]
+. nr rst2man-indent-level +1
+.\" .rstReportMargin post:
+..
+.de UNINDENT
+. RE
+.\" indent \\n[an-margin]
+.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]]
+.nr rst2man-indent-level -1
+.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
+.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
+..
 .SH SYNOPSIS
-.B gie
-[\-options]... infile...
+.INDENT 0.0
+.INDENT 3.5
+\fBgie\fP [ \fB\-hovql\fP [ args ] ] file[s]
+.UNINDENT
+.UNINDENT
 .SH DESCRIPTION
-\fBgie\fR, the Geospatial Integrity Investigation Environment, is a modest
-regression testing environment for the PROJ transformation library.
-.PP
-Its primary design goal was to be able to replace those thousands of
-lines of regression testing code that are (at time of writing) part
-of PROJ, while not requiring any other kind of tooling than the same
-C compiler already employed for compiling the library.
-.PP
-The basic functionality of the gie command language is implemented
-through just 3 command verbs:
-.PP
-operation,     which defines the PROJ operation to test,
-.br
-accept,        which defines the input coordinate to read, and
-.br
-expect,        which defines the result to expect.
-.PP
-E.g:
-.PP
+.sp
+\fBgie\fP, the Geospatial Integrity Investigation Environment, is a
+regression testing environment for the PROJ transformation library. Its primary
+design goal is to be able to perform regression testing of code that are a part
+of PROJ, while not requiring any other kind of tooling than the same C compiler
+already employed for compiling the library.
+.INDENT 0.0
+.TP
+.B \-h, \-\-help
+Print usage information
+.UNINDENT
+.INDENT 0.0
+.TP
+.B \-o <file>, \-\-output <file>
+Specify output file name
+.UNINDENT
+.INDENT 0.0
+.TP
+.B \-v, \-\-verbose
+Verbose: Provide non\-essential informational output.  Repeat \fI\%\-v\fP for
+more verbosity (e.g. \fB\-vv\fP)
+.UNINDENT
+.INDENT 0.0
+.TP
+.B \-q, \-\-quiet
+Quiet: Opposite of verbose. In  quiet  mode  not  even  errors  are
+reported.  Only  interaction  is through the return code (0 on success,
+non\-zero indicates number of FAILED tests)
+.UNINDENT
+.INDENT 0.0
+.TP
+.B \-l, \-\-list
+List the PROJ internal system error codes
+.UNINDENT
+.sp
+Tests for \fBgie\fP are defined in simple text files. Usually having the
+extension \fB\&.gie\fP\&. Test for \fBgie\fP are written in the purpose\-build command language for gie.
+The basic functionality of the gie command language is implemented through just
+3 command verbs: \fBoperation\fP, which defines the PROJ operation to test,
+\fBaccept\fP, which defines the input coordinate to read, and \fBexpect\fP, which
+defines the result to expect.
+.sp
+A sample test file for \fBgie\fP that uses the three above basic commands looks
+like:
+.INDENT 0.0
+.INDENT 3.5
+.sp
+.nf
+.ft C
+<gie>
+
+\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-
+Test output of the UTM projection
+\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-
 operation  +proj=utm  +zone=32  +ellps=GRS80
-.br
+\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-
 accept     12  55
-.br
 expect     691_875.632_14   6_098_907.825_05
-.PP
-Note that gie accepts the underscore ("_") as a thousands separator.
-It is not required (in fact, it is entirely ignored by the input
-routine), but it significantly improves the readability of the very
-long strings of numbers typically required in projected coordinates.
-.PP
-By default, gie considers the EXPECTation met, if the result comes to
-within 0.5 mm of the expected. This default can be changed using the
-"tolerance" command verb (and yes, I know, linguistically speaking, both
-"operation" and "tolerance" are nouns, not verbs). See the first
-few hundred lines of the "builtins.gie" test file for more details of
-the command verbs available (verbs of both the VERBal and NOUNistic
-persuation).
-.PP
-But more importantly than being an acronym for "Geospatial Integrity
-Investigation Environment", gie were also the initials, user id, and
-USGS email address of Gerald Ian Evenden (1935--2016), the geospatial
-visionary, who, already in the 1980s, started what was to become the
-PROJ of today.
-.PP
-Gerald's clear vision was that map projections are *just special
-functions*. Some of them rather complex, most of them of two variables,
-but all of them *just special functions*, and not particularly more
-special than the sin(), cos(), tan(), and hypot() already available in
-the C standard library.
-.PP
-And hence, according to Gerald, *they should not be particularly much
-harder to use*, for a programmer, than the sin()s, tan()s and hypot()s
-so readily available.
-.PP
-Gerald's ingenuity also showed in the implementation of the vision,
-where he devised a comprehensive, yet simple, system of key-value
-pairs for parameterising a map projection, and the highly flexible
-PJ struct, storing run-time compiled versions of those key-value pairs,
-hence making a map projection function call, pj_fwd(PJ, point), as easy
-as a traditional function call like hypot(x,y).
-.PP
-While today, we may have more formally well defined metadata systems
-(most prominent the OGC WKT2 representation), nothing comes close being
-as easily readable ("human compatible") as Gerald's key-value system.
-This system in particular, and the PROJ system in general, was
-Gerald's great gift to anyone using and/or communicating about geodata.
-.PP
-It is only reasonable to name a program, keeping an eye on the integrity
-of the PROJ system, in honour of Gerald.
-.PP
-So in honour, and hopefully also in the spirit, of Gerald Ian Evenden
-(1935--2016), this is the Geospatial Integrity Investigation Environment.
-.SH OPTIONS
-.IP "\fB\fB\-h\fR\fR" 1c
-Help: print usage information\&
-.IP "\fB\fB\-o /path/to/file\fR\fR" 1c
-Specify output file name\&
-.IP "\fB\fB\-v\fR\fR" 1c
-Verbose: Provide non-essential informational output.
-Repeat \-v for more verbosity (e.g. \-vv)\&
-.IP "\fB\fB\-q\fR\fR" 1c
-Quiet: Opposite of verbose. In quiet mode not even errors
-are reported. Only interaction is through the return code
-(0 on success, non-zero indicates number of FAILED tests)\&
-.IP "\fB\fB\-l\fR\fR" 1c
-List the PROJ internal system error codes\&
-.SH LONG OPTIONS
-.IP "\fB\fB\-\-output\fR\fR" 1c
-Alias for \-o\&
-.IP "\fB\fB\-\-verbose\fR\fR" 1c
-Alias for \-v\&
-.IP "\fB\fB\-\-help\fR\fR" 1c
-Alias for -h\&
-.IP "\fB\fB\-\-list\fR\fR" 1c
-Alias for \-l\&
+
+</gie>
+.ft P
+.fi
+.UNINDENT
+.UNINDENT
+.sp
+Parsing of a  \fBgie\fP file starts at \fB<gie>\fP and ends when \fB</gie>\fP
+is reached. Anything before \fB<gie>\fP and after \fB</gie>\fP is not considered.
+Test cases are created by defining an \fI\%operation\fP which
+\fI\%accept\fP an input coordinate and \fI\%expect\fP an output
+coordinate.
+.sp
+Because \fBgie\fP tests are wrapped in the \fB<gie>\fP/\fB</gie>\fP tags it is
+also possible to add test cases to custom made init files\&.
+The tests will be ignore by PROJ when reading the init file with \fI+init\fP and
+\fBgie\fP ignores anything not wrapped in \fB<gie>\fP/\fB</gie>\fP\&.
+.sp
+\fBgie\fP tests are defined by a set of commands like \fI\%operation\fP,
+\fI\%accept\fP and \fI\%expect\fP in the example above. Together the
+commands make out the \fBgie\fP command language. Any line in a
+\fBgie\fP file that does not start with a command is ignored. In the
+example above it is seen how this can be used to add comments and styling to
+\fBgie\fP test files in order to make them more readable as well as
+documenting what the purpose of the various tests are.
+.sp
+Below the \fI\%gie command language\fP is explained in details.
 .SH EXAMPLES
-1. Run all tests in file \"corner-cases.gie\", providing much extra information
-.IP
-gie \-vvvv corner-cases.gie
-.PP
-2. Run all tests in files \"foo\" and \"bar\", providing info on failures only
-.IP
+.INDENT 0.0
+.IP 1. 3
+Run all tests in a file with all debug information turned on
+.UNINDENT
+.INDENT 0.0
+.INDENT 3.5
+.sp
+.nf
+.ft C
+gie \-vvvv corner\-cases.gie
+.ft P
+.fi
+.UNINDENT
+.UNINDENT
+.INDENT 0.0
+.IP 2. 3
+Run all tests in several files
+.UNINDENT
+.INDENT 0.0
+.INDENT 3.5
+.sp
+.nf
+.ft C
 gie foo bar
+.ft P
+.fi
+.UNINDENT
+.UNINDENT
+.SH GIE COMMAND LANGUAGE
+.INDENT 0.0
+.TP
+.B operation <+args>
+Define a PROJ operation to test. Example:
+.INDENT 7.0
+.INDENT 3.5
+.sp
+.nf
+.ft C
+operation proj=utm zone=32 ellps=GRS80
+# test 4D function
+accept    12 55 0 0
+expect    691875.63214  6098907.82501  0  0
+
+# test 2D function
+accept    12 56
+expect    687071.4391   6210141.3267
+.ft P
+.fi
+.UNINDENT
+.UNINDENT
+.UNINDENT
+.INDENT 0.0
+.TP
+.B accept <x y [z [t]]>
+Define the input coordinate to read. Takes test coordinate. The coordinate
+can be defined by either 2, 3 or 4 values, where the first two values are
+the x\- and y\-components, the 3rd is the z\-component and the 4th is the time
+component. The number of components in the coordinate determines which
+version of the operation is tested (2D, 3D or 4D). Many coordinates can be
+accepted for one \fI\%operation\fP\&. For each \fI\%accept\fP an
+accompanying \fI\%expect\fP is needed.
+.sp
+Note that \fBgie\fP accepts the underscore (“_”) as a thousands
+separator.  It is not required (in fact, it is entirely ignored by the
+input routine), but it significantly improves the readability of the very
+long strings of numbers typically required in projected coordinates.
+.sp
+See \fI\%operation\fP for an example.
+.UNINDENT
+.INDENT 0.0
+.TP
+.B expect <x y [z [t]]> | <error code>
+Define the expected coordinate that will be returned from accepted
+coordinate passed though an operation. The expected coordinate can be
+defined by either 2, 3 or 4 components, similarly to \fI\%accept\fP\&.
+Many coordinates can be expected for one \fI\%operation\fP\&. For each
+\fI\%expect\fP an accompanying \fI\%accept\fP is needed.
+.sp
+See \fI\%operation\fP for an example.
+.sp
+In addition to expecting a coordinate it is also possible to expect a
+PROJ error code in case an operation can’t be created. This is useful when
+testing that errors are caught and handled correctly. Below is an example of
+that tests that the pipeline operator fails correctly when a non\-invertable
+pipeline is constructed.
+.INDENT 7.0
+.INDENT 3.5
+.sp
+.nf
+.ft C
+operation   proj=pipeline step
+            proj=urm5 n=0.5 inv
+expect      failure pjd_err_malformed_pipeline
+.ft P
+.fi
+.UNINDENT
+.UNINDENT
+.sp
+See \fBgie \-l\fP for a list of error codes that can be expected.
+.UNINDENT
+.INDENT 0.0
+.TP
+.B tolerance <tolerance>
+The \fI\%tolerance\fP command controls how much accepted coordinates
+can deviate from the expected coordinate. This is handy to test that an
+operation meets a certain numerical tolerance threshold. Some operations
+are expexted to be accurate within milimeters  where others might only be
+accurate within a few meters. \fI\%tolerance\fP should
+.INDENT 7.0
+.INDENT 3.5
+.sp
+.nf
+.ft C
+operation       proj=merc
+# test coordinate as returned by \(ga\(ga\(gaecho 12 55 | proj +proj=merc\(ga\(ga
+tolerance       1 cm
+accept          12 55
+expect          1335833.89 7326837.72
+
+# test that the same coordinate with a 50 m false easting as determined
+# by \(ga\(gaecho 12 55 |proj +proj=merc +x_0=50\(ga\(ga is still within a 100 m
+# tolerance of the unaltered coordinate from proj=merc
+tolerance       100 m
+accept          12 55
+expect          1335883.89  7326837.72
+.ft P
+.fi
+.UNINDENT
+.UNINDENT
+.sp
+The default tolerance is 0.5 mm. See \fBproj \-lu\fP for a list of possible
+units.
+.UNINDENT
+.INDENT 0.0
+.TP
+.B roundtrip <n> <tolerance>
+Do a roundtrip test of an operation. \fI\%roundtrip\fP needs a
+\fI\%operation\fP and a \fI\%accept\fP command
+to function. The accepted coordinate is passed to the operation first in
+it’s forward mode, then the output from the forward operation is passed
+back to the inverse operation. This procedure is done \fBn\fP times. If the
+resulting coordinate is within the set tolerance of the initial coordinate
+the test is passed.
+.sp
+Example:
+.sp
+operation       proj=merc
+accept          12 55
+roundtrip       10000 5 mm
+.UNINDENT
+.INDENT 0.0
+.TP
+.B direction <direction>
+The \fI\%direction\fP command specifies in which direction an operation
+is performed. This can either be \fBforward\fP or \fBinverse\fP\&. An example of
+this is seen below where it is tested that a symmetrical transformation
+pipeline returns the same results in both directions.
+.INDENT 7.0
+.INDENT 3.5
+.sp
+.nf
+.ft C
+operation proj=pipeline zone=32 step
+          proj=utm  ellps=GRS80 step
+          proj=utm  ellps=GRS80 inv
+tolerance 0.1 mm
+
+accept 12 55 0 0
+expect 12 55 0 0
+
+# Now the inverse direction (still same result: the pipeline is symmetrical)
+
+direction inverse
+expect 12 55 0 0
+.ft P
+.fi
+.UNINDENT
+.UNINDENT
+.sp
+The default direction is “forward”.
+.UNINDENT
+.INDENT 0.0
+.TP
+.B ignore <error code>
+This is especially
+useful in test cases that rely on a grid that is not guaranteed to be
+available. Below is an example of that situation.
+.INDENT 7.0
+.INDENT 3.5
+.sp
+.nf
+.ft C
+operation  proj=hgridshift +grids=nzgd2kgrid0005.gsb  ellps=GRS80
+tolerance 1 mm
+ignore    pjd_err_failed_to_load_grid
+accept    172.999892181021551 \-45.001620431954613
+expect    173                 \-45
+.ft P
+.fi
+.UNINDENT
+.UNINDENT
+.sp
+See \fBgie \-l\fP for a list of error codes that can be ignored.
+.UNINDENT
+.SH BACKGROUND
+.sp
+More importantly than being an acronym for “Geospatial Integrity Investigation
+Environment”, gie were also the initials, user id, and USGS email address of
+Gerald Ian Evenden (1935–2016), the geospatial visionary, who, already in the
+1980s, started what was  to  become  the PROJ of today.
+.sp
+Gerald’s clear vision was that map projections are \fIjust special functions\fP\&.
+Some of them rather complex, most of them of two variables, but all of them
+\fIjust special functions\fP, and not particularly more special than the \fBsin()\fP,
+\fBcos()\fP, \fBtan()\fP, and \fBhypot()\fP already available  in  the  C standard library.
+.sp
+And hence, according to Gerald, \fIthey should not be particularly much harder
+to use\fP, for a programmer, than the \fBsin()\fP’s, \fBtan()\fP’s and
+\fBhypot()\fP’s so readily available.
+.sp
+Gerald’s ingenuity also showed in the implementation of the vision, where
+he devised a comprehensive, yet simple, system of key\-value pairs for
+parameterising a map projection, and the highly flexible PJ struct, storing
+run\-time compiled versions of those key\-value pairs, hence mak\- ing  a  map
+projection  function call, pj_fwd(PJ, point), as easy as a traditional function
+call like \fBhypot(x,y)\fP\&.
+.sp
+While today, we may have more formally well defined metadata systems (most
+prominent the OGC WKT2 representation), nothing comes close being as easily
+readable (“human compatible”) as Gerald’s key\-value system. This system in
+particular, and the PROJ system in general, was Gerald’s great gift to anyone
+using and/or communicating about geodata.
+.sp
+It is only reasonable to name a program, keeping an eye on the
+integrity of the PROJ system, in honour of Gerald.
+.sp
+So in honour, and hopefully also in the spirit, of Gerald Ian Evenden
+(1935–2016), this is the Geospatial Integrity Investigation Environment.
+.SH SEE ALSO
+.sp
+\fBproj(1)\fP, \fBcs2cs(1)\fP, \fBcct(1)\fP, \fBgeod(1)\fP
+.SH BUGS
+.sp
+A list of know bugs can be found at \fI\%http://github.com/OSGeo/proj.4/issues\fP
+where new bug reports can be submitted to.
 .SH HOME PAGE
-http://proj4.org/
+.sp
+\fI\%http://proj4.org/\fP
+.SH AUTHOR
+Thomas Knudsen
+.SH COPYRIGHT
+1983-2018
+.\" Generated by docutils manpage writer.
+.
diff --git a/man/man1/proj.1 b/man/man1/proj.1
index 5b58fcd..b258388 100644
--- a/man/man1/proj.1
+++ b/man/man1/proj.1
@@ -1,303 +1,277 @@
-.\" release 5
-.\"
-.ad b
-.hy 1
-.TH PROJ 1 "2018/02/25 Rel. 5.0.0"
+.\" Man page generated from reStructuredText.
+.
+.TH "PROJ" "1" "Apr 1, 2018" "5.0.1" "PROJ.4"
 .SH NAME
-proj \- forward cartographic projection filter
-.br
-invproj \- inverse cartographic projection filter
+proj \- Cartographic projection filter
+.
+.nr rst2man-indent-level 0
+.
+.de1 rstReportMargin
+\\$1 \\n[an-margin]
+level \\n[rst2man-indent-level]
+level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
+-
+\\n[rst2man-indent0]
+\\n[rst2man-indent1]
+\\n[rst2man-indent2]
+..
+.de1 INDENT
+.\" .rstReportMargin pre:
+. RS \\$1
+. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin]
+. nr rst2man-indent-level +1
+.\" .rstReportMargin post:
+..
+.de UNINDENT
+. RE
+.\" indent \\n[an-margin]
+.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]]
+.nr rst2man-indent-level -1
+.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
+.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
+..
 .SH SYNOPSIS
-.B proj
-[
-.B \-bcCeEfiIlmorsStTvVwW
-[
-.I args
-] ] [
-.B +args
-]
-file[s]
-.br
-.B invproj
-[
-.B \-bcCeEfiIlmorsStTwW
-[
-.I args
-] ] [
-.B +args
-]
-file[s]
+.INDENT 0.0
+.INDENT 3.5
+\fBproj\fP [ \fB\-bceEfiIlmorsStTvVwW\fP ] [ args ] ] [ \fI+args\fP ] file[s]
+.sp
+\fBinvproj\fP [ \fB\-bceEfiIlmorsStTwW\fP ] [ args ] ] [ \fI+args\fP ] file[s]
+.UNINDENT
+.UNINDENT
 .SH DESCRIPTION
-.I Proj
-and
-.I invproj
-perform respective forward and inverse transformation of cartographic data
-to or from cartesian data with a wide range of selectable projection functions.
-.PP
-The following control parameters can appear in any order:
+.sp
+\fBproj\fP and \fBinvproj\fP perform respective forward  and inverse
+transformation  of cartographic data to or from cartesian data  with  a  wide
+range  of selectable projection functions.
+.sp
+\fBinvproj\fP may not be available on all  platforms;  in  this  case
+use \fI\%proj \-I\fP instead.
+.sp
+The  following  control parameters can appear in any order
+.INDENT 0.0
 .TP
-.BI \-b
-Special option for binary coordinate data input and output
-through standard input and standard output.
-Data is assumed to be in system type
-.I double
-floating point words.
-This option is to be used when
-.B proj
-is a
-.I son
-process and allows bypassing formatting operations.
+.B \-b
+Special option for binary coordinate data input and output through standard
+input and standard output. Data is assumed to be in system type double
+floating point words. This option is to be used when proj is a son process
+and allows bypassing formatting operations.
+.UNINDENT
+.INDENT 0.0
 .TP
-.BI \-i
-Selects binary input only (see
-.B \-b option).
+.B \-i
+Selects binary input only (see \fI\%\-b\fP).
+.UNINDENT
+.INDENT 0.0
 .TP
-.BI \-I
-alternate method to specify inverse projection.
-Redundant when used with
-.B invproj.
+.B \-I
+alternate method to specify inverse projection. Redundant when used with
+invproj.
+.UNINDENT
+.INDENT 0.0
 .TP
-.BI \-o
-Selects binary output only (see
-.B \-b option).
+.B \-o
+Selects binary output only (see \fI\%\-b\fP).
+.UNINDENT
+.INDENT 0.0
 .TP
-.BI \-t "a"
-.I A
-specifies a character employed as the first character to denote
-a control line to be passed through without processing.
-This option applicable to ascii input only.
-(# is the default value).
+.B \-t<a>
+\fIa\fP specifies a character employed as the first character to denote a
+control line to be passed through without  processing. This  option
+applicable to ascii input only. (# is the default value).
+.UNINDENT
+.INDENT 0.0
 .TP
-.BI \-e " string"
-.I String
-is an arbitrary string to be output if an error is detected during
-data transformations.
-The default value is: *\et*.
-Note that if the
-.B \-b,
-.B \-i
-or
-.B \-o
-options are employed, an error is returned as HUGE_VAL
-value for both return values.
+.B \-e <string>
+String is an arbitrary string to be output if an error is detected during
+data transformations. The default value is: \fIt\fP\&. Note that if the
+\fI\%\-b\fP, \fI\%\-i\fP or \fI\%\-o\fP options are employed, an error
+is returned as HUGE_VAL value for both return values.
+.UNINDENT
+.INDENT 0.0
+.TP
+.B \-E
+causes the input coordinates to be copied to the output line prior to
+printing the converted values.
+.UNINDENT
+.INDENT 0.0
 .TP
-.BI \-E
-causes the input coordinates to be copied to the output line
-prior to printing the converted values.
+.B \-l<[=id]>
+List projection identifiers that can be selected with \fI+proj\fP\&. \fBproj \-l=id\fP
+gives expanded description of projection id, e.g. \fBproj \-l=merc\fP\&.
+.UNINDENT
+.INDENT 0.0
 .TP
-.BI \-l "[p|P|=|e|u|d]" id
-List projection identifiers with
-.B \-l,
 .B \-lp
-or
-.B \-lP (expanded)
-that can be selected with
-.B +proj.
-.BI \-l= id
-gives expanded description of projection
-.I id.
-List ellipsoid identifiers with
-.B \-le,
-that can be selected with
-.B +ellps,
+List of all projection id that can be used with the \fI+proj\fP parameter.
+Equivalent to \fBproj \-l\fP\&.
+.UNINDENT
+.INDENT 0.0
+.TP
+.B \-lP
+Expanded description of all projections that can be used with the \fI+proj\fP
+parameter.
+.UNINDENT
+.INDENT 0.0
+.TP
+.B \-le
+List of all ellipsoids that can be selected with the \fI+ellps\fP parameters.
+.UNINDENT
+.INDENT 0.0
+.TP
 .B \-lu
-list of cartesian to meter conversion factors
-that can be selected with
-.B +units
-or
+List of all distance units that can be selected with the \fI+units\fP parameter.
+.UNINDENT
+.INDENT 0.0
+.TP
 .B \-ld
-list of datums that can be selected with
-.B +datum.
+List of datums that can be selected with the \fI+datum\fP parameter.
+.UNINDENT
+.INDENT 0.0
 .TP
-.BI \-r
-This options reverses the order of the
-expected input from longitude-latitude or x-y to latitude-longitude or y-x.
+.B \-r
+This options reverses the order of the expected input from
+longitude\-latitude or x\-y to latitude\-longitude or y\-x.
+.UNINDENT
+.INDENT 0.0
 .TP
-.BI \-s
-This options reverses the order of the
-output from x-y or longitude-latitude to y-x or latitude-longitude.
+.B \-s
+This options reverses the order of the output from x\-y or longitude\-latitude
+to y\-x or latitude\-longitude.
+.UNINDENT
+.INDENT 0.0
 .TP
-.BI \-S
-Causes estimation of
-.I meridional
-and
-.I parallel
-scale factors,
-.I area
-scale factor and
-.I angular distortion,
-and
-.I maximum
-and
-.I minimum
-scale factors to be listed between <> for each input point.
-For conformal projections meridional and parallel scales factors
-will be equal and angular distortion zero.
-Equal area projections will have an area factor of 1.
+.B \-S
+Causes estimation of meridional and parallel scale factors, area scale
+factor and angular distortion, and maximum and minimum scale factors to be
+listed between <> for each input point. For conformal projections meridional
+and parallel scales factors will be equal and angular distortion zero. Equal
+area projections will have an area factor of 1.
+.UNINDENT
+.INDENT 0.0
 .TP
-.BI \-m " mult"
-The cartesian data may be scaled by the
-.I mult
-parameter.
-When processing data in a forward projection mode the
-cartesian output values are multiplied by
-.I mult
-otherwise the input cartesian values are divided by
-.I mult
-before inverse projection.
-If the first two characters of
-.I mult
-are 1/ or 1: then the reciprocal value of
-.I mult
-is employed.
+.B \-m <mult>
+The cartesian data may be scaled by the mult parameter. When processing data
+in a forward projection mode the cartesian output values are multiplied by
+mult otherwise the input cartesian values are divided by mult before inverse
+projection.  If the first two characters of mult are 1/ or 1: then the
+reciprocal value of mult is employed.
+.UNINDENT
+.INDENT 0.0
 .TP
-.BI \-f " format"
-.I Format
-is a
-.I printf
-format string to control the form of the output values.
-For inverse projections, the output will be in degrees when this option
-is employed.
-The default format is "%.2f" for forward projection and DMS
-for inverse.
+.B \-f <format>
+Format is a printf format string to control the form of the output values.
+For inverse projections, the output will be in degrees when this option is
+employed.  The  default format is “%.2f” for forward projection and DMS for
+inverse.
+.UNINDENT
+.INDENT 0.0
 .TP
-.BI \-[w|W] n
-.I N
-is the number of significant fractional digits to employ for
-seconds output (when the option is not specified,
-.B \-w3
-is assumed).
-When
-.B \-W
-is employed the fields will be constant width and with leading zeroes.
+.B \-[w|W]<n>
+N is the number of significant fractional digits to employ for seconds
+output (when the  option  is  not  specified, \fB\-w3\fP is assumed). When \fB\-W\fP
+is employed the fields will be constant width and  with  leading zeroes.
+.UNINDENT
+.INDENT 0.0
 .TP
 .B \-v
-causes a listing of cartographic control parameters tested for and
-used by the program to be printed prior to input data.
-Should not be used with the
-.B \-T
-option.
+causes a listing of cartographic control parameters tested for and used by
+the program to be printed prior to input data. Should not be used with the
+\fI\%\-T\fP option.
+.UNINDENT
+.INDENT 0.0
 .TP
 .B \-V
-This option causes an expanded annotated listing of the characteristics
-of the projected point.
-.B -v is implied with this option.
+This option causes an expanded annotated listing of the characteristics of
+the projected point. \fI\%\-v\fP is implied with this option.
+.UNINDENT
+.INDENT 0.0
 .TP
-.BI \-T " ulow,uhi,vlow,vhi,res[,umax,vmax]"
-This option creates a set of bivariate Chebyshev polynomial
-coefficients that approximate the selected cartographic projection on
-.I stdout.
-The values
-.I low
-and
-.I hi
-denote the range of the input where the
-.I u
-or
-.I v
-prefixes apply to respective longitude-x or latitude-y
-depending upon whether a forward or inverse projection is selected.
-.I Res
-is an integer number specifying the power of 10 precision of the
-approximation.
-For example, a
-.I res
-of \-3 specifies an approximation with an accuracy better than .001.
-.I Umax,
-and
-.I vmax
+.B \-T <ulow,uhi,vlow,vhi,res[,umax,vmax]>
+This option creates a set of bivariate Chebyshev polynomial coefficients
+that approximate the selected  cartographic projection on stdout. The values
+low and hi denote the range of the input where the u or v prefixes apply to
+respective longitude\-x or latitude\-y depending upon whether a forward or
+inverse projection is selected. Res is an integer number specifying the
+power of 10 precision of the approximation. For example, a res of \-3
+specifies an approximation with an accuracy better than .001. Umax, and vmax
 specify maximum degree of the polynomials (default: 15).
-See also:
-.B fproj(1).
-.PP
-The
-.B +args
-run-line arguments are associated with cartographic parameters
-and usage varies with projection and for a complete description see
-.I "Cartographic Projection Procedures for the UNIX Environment\(emA User's Manual"
-and supplementary documentation for Release 4.
-.PP
-Additional projection control parameters may be contained in two
-auxiliary control files:
-the first is optionally referenced with the
-.BI +init= file:id
-and the second is always processed after the name
-of the projection has been established from either the run-line
-or the contents of
-.B +init
-file.
-The environment parameter
-.B PROJ_LIB
-establishes the default directory for a file reference without
-an absolute path.  This is also used for supporting files like
-datum shift files.
-.PP
-One or more
-.I files
-(processed in left to right order)
-specify the source of data to be transformed.
-A \- will specify the location of processing standard input.
-If no files are specified, the input is assumed to be from
-.I stdin.
-For ASCII input data the two data values must be in the
-first two white space separated fields and
-when both input and output are ASCII all trailing portions
-of the input line are appended to the output line.
-.PP
-Input geographic data
-(longitude and latitude) must be in DMS format and input
-cartesian data must be in units consistent with the ellipsoid
-major axis or sphere radius units.
-Output geographic coordinates will be in DMS
-(if the
-.B \-w
-switch is not employed) and precise to 0.001"
-with trailing, zero-valued minute-second fields deleted.
+.UNINDENT
+.sp
+The \fI+args\fP run\-line arguments are associated with cartographic parameters.
+Additional projection control parameters may  be contained  in  two  auxiliary
+control files: the first  is   optionally   referenced   with   the
+\fI+init=file:id\fP and the second is always processed after the name of the
+projection has been established from either the run\-line or the contents of
++init  file.   The   environment   parameter \fBPROJ_LIB\fP establishes the
+default directory for a file reference without an absolute  path.   This is
+also  used  for  supporting files like datum shift files.
+.sp
+One or more files (processed in  left  to  right order)  specify  the source of
+data to be transformed.  A \fB\-\fP will specify the location  of  processing standard
+input.  If no files are specified, the input is assumed  to  be  from  stdin.
+For ASCII input data the two data values must be in the first two white  space
+separated  fields and  when  both  input  and output are ASCII all trailing
+portions of the input line are appended to the output line.
+.sp
+Input  geographic  data (longitude and latitude) must be in DMS format and input
+cartesian  data must  be  in units consistent with the ellipsoid major axis or
+sphere radius units.  Output geographic  coordinates  will  be in DMS (if the
+\fB\-w\fP switch is not employed) and  precise  to  0.001” with  trailing, zero\-valued
+minute\-second fields deleted.
 .SH EXAMPLE
+.sp
 The following script
-.RS 5
- \f(CWproj +proj=utm +lon_0=112w +ellps=clrk66 \-r <<EOF
- 45d15'33.1"	111.5W
- 45d15.551666667N	\-111d30
- +45.25919444444	111d30'000w
- EOF\fR
-.RE
-will perform UTM forward projection with a standard UTM
-central meridian nearest longitude 112\(deW.
-The geographic values of this example are equivalent and meant
-as examples of various forms of DMS input.
-The x\-y output data will appear as three lines of:
-.RS 5
- \f(CW460769.27	5011648.45
-.RE
+.INDENT 0.0
+.INDENT 3.5
+.sp
+.nf
+.ft C
+proj +proj=utm  +lon_0=112w  +ellps=clrk66
+\-r <<EOF
+45d15\(aq33.1"   111.5W
+45d15.551666667N   \-111d30
++45.25919444444    111d30\(aq000w
+EOF
+.ft P
+.fi
+.UNINDENT
+.UNINDENT
+.sp
+will perform UTM forward projection with a standard UTM  central  meridian
+nearest  longitude 112W.  The geographic values of this example are equivalent
+and  meant  as  examples  of  various forms  of  DMS  input.  The x\-y output
+data will appear as three lines of:
+.INDENT 0.0
+.INDENT 3.5
+.sp
+.nf
+.ft C
+460769.27     5011648.45
+.ft P
+.fi
+.UNINDENT
+.UNINDENT
 .SH OTHER PROGRAMS
-.PP
-The \fIproj\fR program is limited to converting between geographic and
-projection coordinates within one datum.
-.PP
-The \fIcs2cs\fR program operates
-similarly, but allows translation between any pair of definable coordinate
-systems, including support for datum translation.
-.PP
-The \fIgeod\fR program provides the ability to compute geodesic (Great
-Circle) computations.
+.sp
+The \fBproj\fP program is limited to converting between geographic and
+projected coordinates within one datum.
+.sp
+The \fBcs2cs\fP program operates similarly, but allows translation
+between any paor of definable coordinate reference systems, including
+support for datum translation.
 .SH SEE ALSO
-.B cs2cs(1), geod(1), pj_init(3),
-.br
-.I "Cartographic Projection Procedures for the UNIX Environment\(emA User's Manual,"
-(Evenden, 1990, Open-file report 90\-284).
-.br
-.I "Map Projections Used by the U. S. Geological Survey"
-(Snyder, 1984,
-USGS Bulletin 1532).
-.br
-.I "Map Projections\(emA Working Manual"
-(Snyder, 1988, USGS Prof. Paper 1395).
-.br
-.I "An Album of Map Projections"
-(Snyder & Voxland, 1989, USGS Prof. Paper 1453).
+.sp
+\fBcs2cs(1)\fP, \fBcct(1)\fP, \fBgeod(1)\fP, \fBgie(1)\fP
 .SH BUGS
-A list of known bugs can found at https://github.com/OSGeo/proj.4/issues
-where new bug reports can be submitted too.
+.sp
+A list of know bugs can be found at \fI\%http://github.com/OSGeo/proj.4/issues\fP
+where new bug reports can be submitted to.
 .SH HOME PAGE
-http://proj4.org/
+.sp
+\fI\%http://proj4.org/\fP
+.SH AUTHOR
+Gerald I. Evenden
+.SH COPYRIGHT
+1983-2018
+.\" Generated by docutils manpage writer.
+.
diff --git a/man/man3/Makefile.in b/man/man3/Makefile.in
index ff40295..0e9f4fd 100644
--- a/man/man3/Makefile.in
+++ b/man/man3/Makefile.in
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.15.1 from Makefile.am.
+# Makefile.in generated by automake 1.16 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994-2017 Free Software Foundation, Inc.
+# Copyright (C) 1994-2018 Free Software Foundation, Inc.
 
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -90,6 +90,7 @@ host_triplet = @host@
 subdir = man/man3
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/m4/ax_cflags_warn_all.m4 \
+	$(top_srcdir)/m4/ax_check_compile_flag.m4 \
 	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
 	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
 	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/configure.ac
@@ -294,8 +295,8 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	  *config.status*) \
 	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
 	  *) \
-	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
-	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \
+	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \
 	esac;
 
 $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
@@ -362,7 +363,10 @@ ctags CTAGS:
 cscope cscopelist:
 
 
-distdir: $(DISTFILES)
+distdir: $(BUILT_SOURCES)
+	$(MAKE) $(AM_MAKEFLAGS) distdir-am
+
+distdir-am: $(DISTFILES)
 	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
 	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
 	list='$(DISTFILES)'; \
diff --git a/missing b/missing
index c6e3795..38e4fcb 100755
--- a/missing
+++ b/missing
@@ -1,9 +1,9 @@
 #! /bin/sh
 # Common wrapper for a few potentially missing GNU programs.
 
-scriptversion=2016-01-11.22; # UTC
+scriptversion=2018-01-04.22; # UTC
 
-# Copyright (C) 1996-2017 Free Software Foundation, Inc.
+# Copyright (C) 1996-2018 Free Software Foundation, Inc.
 # Originally written by Fran,cois Pinard <pinard at iro.umontreal.ca>, 1996.
 
 # This program is free software; you can redistribute it and/or modify
@@ -17,7 +17,7 @@ scriptversion=2016-01-11.22; # UTC
 # GNU General Public License for more details.
 
 # You should have received a copy of the GNU General Public License
-# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+# along with this program.  If not, see <https://www.gnu.org/licenses/>.
 
 # As a special exception to the GNU General Public License, if you
 # distribute this file as part of a program that contains a
@@ -101,9 +101,9 @@ else
   exit $st
 fi
 
-perl_URL=http://www.perl.org/
-flex_URL=http://flex.sourceforge.net/
-gnu_software_URL=http://www.gnu.org/software
+perl_URL=https://www.perl.org/
+flex_URL=https://github.com/westes/flex
+gnu_software_URL=https://www.gnu.org/software
 
 program_details ()
 {
diff --git a/nad/Makefile.in b/nad/Makefile.in
index 74e0f11..cd76dad 100644
--- a/nad/Makefile.in
+++ b/nad/Makefile.in
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.15.1 from Makefile.am.
+# Makefile.in generated by automake 1.16 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994-2017 Free Software Foundation, Inc.
+# Copyright (C) 1994-2018 Free Software Foundation, Inc.
 
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -91,6 +91,7 @@ host_triplet = @host@
 subdir = nad
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/m4/ax_cflags_warn_all.m4 \
+	$(top_srcdir)/m4/ax_check_compile_flag.m4 \
 	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
 	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
 	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/configure.ac
@@ -319,8 +320,8 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	  *config.status*) \
 	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
 	  *) \
-	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
-	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \
+	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \
 	esac;
 
 $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
@@ -367,7 +368,10 @@ ctags CTAGS:
 cscope cscopelist:
 
 
-distdir: $(DISTFILES)
+distdir: $(BUILT_SOURCES)
+	$(MAKE) $(AM_MAKEFLAGS) distdir-am
+
+distdir-am: $(DISTFILES)
 	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
 	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
 	list='$(DISTFILES)'; \
diff --git a/nad/proj_outIGNF.dist b/nad/proj_outIGNF.dist
index be666fb..45112f6 100644
--- a/nad/proj_outIGNF.dist
+++ b/nad/proj_outIGNF.dist
@@ -1,16 +1,16 @@
 +init=./IGNF:NTFG +to +init=./IGNF:RGF93G
  3.300866856 43.4477976569 0.0000	3d18'0.915"E	43d26'52.077"N 0.000
 +init=./IGNF:LAMBE +to +init=./IGNF:LAMB93
- 600000.0000 2600545.4523  0.0000	652760.737	7033791.244 0.000
+ 600000.0000 2600545.4523  0.0000	652760.737	7033791.243 0.000
  135638.3592 2418760.4094  0.0000	187194.062	6855928.882 0.000
  998137.3947 2413822.2844  0.0000	1049052.258	6843776.562 0.000
- 600000.0000 2200000.0000  0.0000	649398.872	6633524.192 0.000
+ 600000.0000 2200000.0000  0.0000	649398.872	6633524.191 0.000
  311552.5340 1906457.4840  0.0000	358799.172	6342652.486 0.000
  960488.4138 1910172.8812  0.0000	1007068.686	6340907.237 0.000
  600000.0000 1699510.8340  0.0000	645204.279	6133556.746 0.000
-1203792.5981 626873.17210  0.0000	1238875.764	5057405.017 0.000
+1203792.5981 626873.17210  0.0000	1238875.764	5057405.016 0.000
 +init=./IGNF:LAMBE +to +init=./IGNF:GEOPORTALFXX
- 600000.0000 2600545.4523  0.0000	179040.148	5610495.276 0.000
+ 600000.0000 2600545.4523  0.0000	179040.148	5610495.275 0.000
  135638.3592 2418760.4094  0.0000	-303729.363	5410118.356 0.000
  998137.3947 2413822.2844  0.0000	592842.792	5410120.554 0.000
  600000.0000 2200000.0000  0.0000	179041.670	5209746.080 0.000
@@ -37,4 +37,4 @@
 2d20'11.7754730" 42d18'00.0824436" 0.0	260109.601	5009175.714 0.000
 9d32'12.6680218" 41d24'00.3542556" 0.0	1061637.534	4889066.592 0.000
 +init=./IGNF:RGR92 +to +init=./IGNF:REUN47
-3356123.5400 1303218.3090 5247430.6050	3353421.833	1304074.314 5248935.606
+3356123.5400 1303218.3090 5247430.6050	3353421.833	1304074.314 5248935.607
diff --git a/src/Makefile.am b/src/Makefile.am
index f94e5f2..2866819 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -40,7 +40,7 @@ geodtest_LDADD = libproj.la
 
 lib_LTLIBRARIES = libproj.la
 
-libproj_la_LDFLAGS = -no-undefined -version-info 13:0:0
+libproj_la_LDFLAGS = -no-undefined -version-info 13:1:0
 
 libproj_la_SOURCES = \
 	pj_list.h proj_internal.h\
diff --git a/src/Makefile.in b/src/Makefile.in
index 2e08d45..40279df 100644
--- a/src/Makefile.in
+++ b/src/Makefile.in
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.15.1 from Makefile.am.
+# Makefile.in generated by automake 1.16 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994-2017 Free Software Foundation, Inc.
+# Copyright (C) 1994-2018 Free Software Foundation, Inc.
 
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -98,6 +98,7 @@ check_PROGRAMS = geodtest$(EXEEXT)
 subdir = src
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/m4/ax_cflags_warn_all.m4 \
+	$(top_srcdir)/m4/ax_check_compile_flag.m4 \
 	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
 	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
 	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/configure.ac
@@ -109,6 +110,9 @@ mkinstalldirs = $(install_sh) -d
 CONFIG_HEADER = proj_config.h
 CONFIG_CLEAN_FILES =
 CONFIG_CLEAN_VPATH_FILES =
+am__installdirs = "$(DESTDIR)$(bindir)" "$(DESTDIR)$(libdir)" \
+	"$(DESTDIR)$(includedir)"
+PROGRAMS = $(bin_PROGRAMS)
 am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
 am__vpath_adj = case $$p in \
     $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
@@ -136,8 +140,6 @@ am__uninstall_files_from_dir = { \
     || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
          $(am__cd) "$$dir" && rm -f $$files; }; \
   }
-am__installdirs = "$(DESTDIR)$(libdir)" "$(DESTDIR)$(bindir)" \
-	"$(DESTDIR)$(includedir)"
 LTLIBRARIES = $(lib_LTLIBRARIES)
 libproj_la_LIBADD =
 am_libproj_la_OBJECTS = PJ_aeqd.lo PJ_gnom.lo PJ_laea.lo \
@@ -187,7 +189,6 @@ am__v_lt_1 =
 libproj_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
 	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
 	$(libproj_la_LDFLAGS) $(LDFLAGS) -o $@
-PROGRAMS = $(bin_PROGRAMS)
 am_cct_OBJECTS = cct.$(OBJEXT) proj_strtod.$(OBJEXT)
 cct_OBJECTS = $(am_cct_OBJECTS)
 cct_DEPENDENCIES = libproj.la
@@ -231,7 +232,102 @@ am__v_at_0 = @
 am__v_at_1 = 
 DEFAULT_INCLUDES = -I. at am__isrc@
 depcomp = $(SHELL) $(top_srcdir)/depcomp
-am__depfiles_maybe = depfiles
+am__maybe_remake_depfiles = depfiles
+am__depfiles_remade = ./$(DEPDIR)/PJ_aea.Plo ./$(DEPDIR)/PJ_aeqd.Plo \
+	./$(DEPDIR)/PJ_airy.Plo ./$(DEPDIR)/PJ_aitoff.Plo \
+	./$(DEPDIR)/PJ_august.Plo ./$(DEPDIR)/PJ_axisswap.Plo \
+	./$(DEPDIR)/PJ_bacon.Plo ./$(DEPDIR)/PJ_bipc.Plo \
+	./$(DEPDIR)/PJ_boggs.Plo ./$(DEPDIR)/PJ_bonne.Plo \
+	./$(DEPDIR)/PJ_calcofi.Plo ./$(DEPDIR)/PJ_cart.Plo \
+	./$(DEPDIR)/PJ_cass.Plo ./$(DEPDIR)/PJ_cc.Plo \
+	./$(DEPDIR)/PJ_ccon.Plo ./$(DEPDIR)/PJ_cea.Plo \
+	./$(DEPDIR)/PJ_chamb.Plo ./$(DEPDIR)/PJ_collg.Plo \
+	./$(DEPDIR)/PJ_comill.Plo ./$(DEPDIR)/PJ_crast.Plo \
+	./$(DEPDIR)/PJ_deformation.Plo ./$(DEPDIR)/PJ_denoy.Plo \
+	./$(DEPDIR)/PJ_eck1.Plo ./$(DEPDIR)/PJ_eck2.Plo \
+	./$(DEPDIR)/PJ_eck3.Plo ./$(DEPDIR)/PJ_eck4.Plo \
+	./$(DEPDIR)/PJ_eck5.Plo ./$(DEPDIR)/PJ_eqc.Plo \
+	./$(DEPDIR)/PJ_eqdc.Plo ./$(DEPDIR)/PJ_fahey.Plo \
+	./$(DEPDIR)/PJ_fouc_s.Plo ./$(DEPDIR)/PJ_gall.Plo \
+	./$(DEPDIR)/PJ_geoc.Plo ./$(DEPDIR)/PJ_geos.Plo \
+	./$(DEPDIR)/PJ_gins8.Plo ./$(DEPDIR)/PJ_gn_sinu.Plo \
+	./$(DEPDIR)/PJ_gnom.Plo ./$(DEPDIR)/PJ_goode.Plo \
+	./$(DEPDIR)/PJ_gstmerc.Plo ./$(DEPDIR)/PJ_hammer.Plo \
+	./$(DEPDIR)/PJ_hatano.Plo ./$(DEPDIR)/PJ_healpix.Plo \
+	./$(DEPDIR)/PJ_helmert.Plo ./$(DEPDIR)/PJ_hgridshift.Plo \
+	./$(DEPDIR)/PJ_horner.Plo ./$(DEPDIR)/PJ_igh.Plo \
+	./$(DEPDIR)/PJ_imw_p.Plo ./$(DEPDIR)/PJ_isea.Plo \
+	./$(DEPDIR)/PJ_krovak.Plo ./$(DEPDIR)/PJ_labrd.Plo \
+	./$(DEPDIR)/PJ_laea.Plo ./$(DEPDIR)/PJ_lagrng.Plo \
+	./$(DEPDIR)/PJ_larr.Plo ./$(DEPDIR)/PJ_lask.Plo \
+	./$(DEPDIR)/PJ_latlong.Plo ./$(DEPDIR)/PJ_lcc.Plo \
+	./$(DEPDIR)/PJ_lcca.Plo ./$(DEPDIR)/PJ_loxim.Plo \
+	./$(DEPDIR)/PJ_lsat.Plo ./$(DEPDIR)/PJ_mbt_fps.Plo \
+	./$(DEPDIR)/PJ_mbtfpp.Plo ./$(DEPDIR)/PJ_mbtfpq.Plo \
+	./$(DEPDIR)/PJ_merc.Plo ./$(DEPDIR)/PJ_mill.Plo \
+	./$(DEPDIR)/PJ_misrsom.Plo ./$(DEPDIR)/PJ_mod_ster.Plo \
+	./$(DEPDIR)/PJ_moll.Plo ./$(DEPDIR)/PJ_molodensky.Plo \
+	./$(DEPDIR)/PJ_natearth.Plo ./$(DEPDIR)/PJ_natearth2.Plo \
+	./$(DEPDIR)/PJ_nell.Plo ./$(DEPDIR)/PJ_nell_h.Plo \
+	./$(DEPDIR)/PJ_nocol.Plo ./$(DEPDIR)/PJ_nsper.Plo \
+	./$(DEPDIR)/PJ_nzmg.Plo ./$(DEPDIR)/PJ_ob_tran.Plo \
+	./$(DEPDIR)/PJ_ocea.Plo ./$(DEPDIR)/PJ_oea.Plo \
+	./$(DEPDIR)/PJ_omerc.Plo ./$(DEPDIR)/PJ_ortho.Plo \
+	./$(DEPDIR)/PJ_patterson.Plo ./$(DEPDIR)/PJ_pipeline.Plo \
+	./$(DEPDIR)/PJ_poly.Plo ./$(DEPDIR)/PJ_putp2.Plo \
+	./$(DEPDIR)/PJ_putp3.Plo ./$(DEPDIR)/PJ_putp4p.Plo \
+	./$(DEPDIR)/PJ_putp5.Plo ./$(DEPDIR)/PJ_putp6.Plo \
+	./$(DEPDIR)/PJ_qsc.Plo ./$(DEPDIR)/PJ_robin.Plo \
+	./$(DEPDIR)/PJ_rpoly.Plo ./$(DEPDIR)/PJ_sch.Plo \
+	./$(DEPDIR)/PJ_sconics.Plo ./$(DEPDIR)/PJ_somerc.Plo \
+	./$(DEPDIR)/PJ_stere.Plo ./$(DEPDIR)/PJ_sterea.Plo \
+	./$(DEPDIR)/PJ_sts.Plo ./$(DEPDIR)/PJ_tcc.Plo \
+	./$(DEPDIR)/PJ_tcea.Plo ./$(DEPDIR)/PJ_times.Plo \
+	./$(DEPDIR)/PJ_tmerc.Plo ./$(DEPDIR)/PJ_tpeqd.Plo \
+	./$(DEPDIR)/PJ_unitconvert.Plo ./$(DEPDIR)/PJ_urm5.Plo \
+	./$(DEPDIR)/PJ_urmfps.Plo ./$(DEPDIR)/PJ_vandg.Plo \
+	./$(DEPDIR)/PJ_vandg2.Plo ./$(DEPDIR)/PJ_vandg4.Plo \
+	./$(DEPDIR)/PJ_vgridshift.Plo ./$(DEPDIR)/PJ_wag2.Plo \
+	./$(DEPDIR)/PJ_wag3.Plo ./$(DEPDIR)/PJ_wag7.Plo \
+	./$(DEPDIR)/PJ_wink1.Plo ./$(DEPDIR)/PJ_wink2.Plo \
+	./$(DEPDIR)/aasincos.Plo ./$(DEPDIR)/adjlon.Plo \
+	./$(DEPDIR)/bch2bps.Plo ./$(DEPDIR)/bchgen.Plo \
+	./$(DEPDIR)/biveval.Plo ./$(DEPDIR)/cct.Po \
+	./$(DEPDIR)/cs2cs.Po ./$(DEPDIR)/dmstor.Plo \
+	./$(DEPDIR)/emess.Plo ./$(DEPDIR)/gen_cheb.Po \
+	./$(DEPDIR)/geocent.Plo ./$(DEPDIR)/geod.Po \
+	./$(DEPDIR)/geod_interface.Po ./$(DEPDIR)/geod_set.Po \
+	./$(DEPDIR)/geodesic.Plo ./$(DEPDIR)/geodtest.Po \
+	./$(DEPDIR)/gie.Po ./$(DEPDIR)/jniproj.Plo \
+	./$(DEPDIR)/mk_cheby.Plo ./$(DEPDIR)/multistresstest.Po \
+	./$(DEPDIR)/nad2bin.Po ./$(DEPDIR)/nad_cvt.Plo \
+	./$(DEPDIR)/nad_init.Plo ./$(DEPDIR)/nad_intr.Plo \
+	./$(DEPDIR)/p_series.Po ./$(DEPDIR)/pj_apply_gridshift.Plo \
+	./$(DEPDIR)/pj_apply_vgridshift.Plo ./$(DEPDIR)/pj_auth.Plo \
+	./$(DEPDIR)/pj_ctx.Plo ./$(DEPDIR)/pj_datum_set.Plo \
+	./$(DEPDIR)/pj_datums.Plo ./$(DEPDIR)/pj_deriv.Plo \
+	./$(DEPDIR)/pj_ell_set.Plo ./$(DEPDIR)/pj_ellps.Plo \
+	./$(DEPDIR)/pj_errno.Plo ./$(DEPDIR)/pj_factors.Plo \
+	./$(DEPDIR)/pj_fileapi.Plo ./$(DEPDIR)/pj_fwd.Plo \
+	./$(DEPDIR)/pj_gauss.Plo ./$(DEPDIR)/pj_gc_reader.Plo \
+	./$(DEPDIR)/pj_geocent.Plo ./$(DEPDIR)/pj_gridcatalog.Plo \
+	./$(DEPDIR)/pj_gridinfo.Plo ./$(DEPDIR)/pj_gridlist.Plo \
+	./$(DEPDIR)/pj_init.Plo ./$(DEPDIR)/pj_initcache.Plo \
+	./$(DEPDIR)/pj_internal.Plo ./$(DEPDIR)/pj_inv.Plo \
+	./$(DEPDIR)/pj_list.Plo ./$(DEPDIR)/pj_log.Plo \
+	./$(DEPDIR)/pj_malloc.Plo ./$(DEPDIR)/pj_mlfn.Plo \
+	./$(DEPDIR)/pj_msfn.Plo ./$(DEPDIR)/pj_mutex.Plo \
+	./$(DEPDIR)/pj_open_lib.Plo ./$(DEPDIR)/pj_param.Plo \
+	./$(DEPDIR)/pj_phi2.Plo ./$(DEPDIR)/pj_pr_list.Plo \
+	./$(DEPDIR)/pj_qsfn.Plo ./$(DEPDIR)/pj_release.Plo \
+	./$(DEPDIR)/pj_strerrno.Plo ./$(DEPDIR)/pj_strtod.Plo \
+	./$(DEPDIR)/pj_transform.Plo ./$(DEPDIR)/pj_tsfn.Plo \
+	./$(DEPDIR)/pj_units.Plo ./$(DEPDIR)/pj_utils.Plo \
+	./$(DEPDIR)/pj_zpoly1.Plo ./$(DEPDIR)/proj.Po \
+	./$(DEPDIR)/proj_4D_api.Plo ./$(DEPDIR)/proj_etmerc.Plo \
+	./$(DEPDIR)/proj_mdist.Plo ./$(DEPDIR)/proj_rouss.Plo \
+	./$(DEPDIR)/proj_strtod.Po ./$(DEPDIR)/rtodms.Plo \
+	./$(DEPDIR)/test228.Po ./$(DEPDIR)/vector1.Plo
 am__mv = mv -f
 COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
 	$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
@@ -614,7 +710,7 @@ multistresstest_LDADD = libproj.la @THREAD_LIB@
 test228_LDADD = libproj.la @THREAD_LIB@
 geodtest_LDADD = libproj.la
 lib_LTLIBRARIES = libproj.la
-libproj_la_LDFLAGS = -no-undefined -version-info 13:0:0
+libproj_la_LDFLAGS = -no-undefined -version-info 13:1:0
 libproj_la_SOURCES = \
 	pj_list.h proj_internal.h\
 	PJ_aeqd.c PJ_gnom.c PJ_laea.c PJ_mod_ster.c \
@@ -684,8 +780,8 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	  *config.status*) \
 	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
 	  *) \
-	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
-	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \
+	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \
 	esac;
 
 $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
@@ -711,44 +807,6 @@ $(srcdir)/proj_config.h.in:  $(am__configure_deps)
 
 distclean-hdr:
 	-rm -f proj_config.h stamp-h1
-
-install-libLTLIBRARIES: $(lib_LTLIBRARIES)
-	@$(NORMAL_INSTALL)
-	@list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \
-	list2=; for p in $$list; do \
-	  if test -f $$p; then \
-	    list2="$$list2 $$p"; \
-	  else :; fi; \
-	done; \
-	test -z "$$list2" || { \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(libdir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(libdir)" || exit 1; \
-	  echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(libdir)'"; \
-	  $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(libdir)"; \
-	}
-
-uninstall-libLTLIBRARIES:
-	@$(NORMAL_UNINSTALL)
-	@list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \
-	for p in $$list; do \
-	  $(am__strip_dir) \
-	  echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(libdir)/$$f'"; \
-	  $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(libdir)/$$f"; \
-	done
-
-clean-libLTLIBRARIES:
-	-test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES)
-	@list='$(lib_LTLIBRARIES)'; \
-	locs=`for p in $$list; do echo $$p; done | \
-	      sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \
-	      sort -u`; \
-	test -z "$$locs" || { \
-	  echo rm -f $${locs}; \
-	  rm -f $${locs}; \
-	}
-
-libproj.la: $(libproj_la_OBJECTS) $(libproj_la_DEPENDENCIES) $(EXTRA_libproj_la_DEPENDENCIES) 
-	$(AM_V_CCLD)$(libproj_la_LINK) -rpath $(libdir) $(libproj_la_OBJECTS) $(libproj_la_LIBADD) $(LIBS)
 install-binPROGRAMS: $(bin_PROGRAMS)
 	@$(NORMAL_INSTALL)
 	@list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \
@@ -808,6 +866,44 @@ clean-checkPROGRAMS:
 	echo " rm -f" $$list; \
 	rm -f $$list
 
+install-libLTLIBRARIES: $(lib_LTLIBRARIES)
+	@$(NORMAL_INSTALL)
+	@list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \
+	list2=; for p in $$list; do \
+	  if test -f $$p; then \
+	    list2="$$list2 $$p"; \
+	  else :; fi; \
+	done; \
+	test -z "$$list2" || { \
+	  echo " $(MKDIR_P) '$(DESTDIR)$(libdir)'"; \
+	  $(MKDIR_P) "$(DESTDIR)$(libdir)" || exit 1; \
+	  echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(libdir)'"; \
+	  $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(libdir)"; \
+	}
+
+uninstall-libLTLIBRARIES:
+	@$(NORMAL_UNINSTALL)
+	@list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \
+	for p in $$list; do \
+	  $(am__strip_dir) \
+	  echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(libdir)/$$f'"; \
+	  $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(libdir)/$$f"; \
+	done
+
+clean-libLTLIBRARIES:
+	-test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES)
+	@list='$(lib_LTLIBRARIES)'; \
+	locs=`for p in $$list; do echo $$p; done | \
+	      sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \
+	      sort -u`; \
+	test -z "$$locs" || { \
+	  echo rm -f $${locs}; \
+	  rm -f $${locs}; \
+	}
+
+libproj.la: $(libproj_la_OBJECTS) $(libproj_la_DEPENDENCIES) $(EXTRA_libproj_la_DEPENDENCIES) 
+	$(AM_V_CCLD)$(libproj_la_LINK) -rpath $(libdir) $(libproj_la_OBJECTS) $(libproj_la_LIBADD) $(LIBS)
+
 cct$(EXEEXT): $(cct_OBJECTS) $(cct_DEPENDENCIES) $(EXTRA_cct_DEPENDENCIES) 
 	@rm -f cct$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(cct_OBJECTS) $(cct_LDADD) $(LIBS)
@@ -850,196 +946,202 @@ mostlyclean-compile:
 distclean-compile:
 	-rm -f *.tab.c
 
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/PJ_aea.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/PJ_aeqd.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/PJ_airy.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/PJ_aitoff.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/PJ_august.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/PJ_axisswap.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/PJ_bacon.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/PJ_bipc.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/PJ_boggs.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/PJ_bonne.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/PJ_calcofi.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/PJ_cart.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/PJ_cass.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/PJ_cc.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/PJ_ccon.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/PJ_cea.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/PJ_chamb.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/PJ_collg.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/PJ_comill.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/PJ_crast.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/PJ_deformation.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/PJ_denoy.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/PJ_eck1.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/PJ_eck2.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/PJ_eck3.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/PJ_eck4.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/PJ_eck5.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/PJ_eqc.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/PJ_eqdc.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/PJ_fahey.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/PJ_fouc_s.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/PJ_gall.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/PJ_geoc.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/PJ_geos.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/PJ_gins8.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/PJ_gn_sinu.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/PJ_gnom.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/PJ_goode.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/PJ_gstmerc.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/PJ_hammer.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/PJ_hatano.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/PJ_healpix.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/PJ_helmert.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/PJ_hgridshift.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/PJ_horner.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/PJ_igh.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/PJ_imw_p.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/PJ_isea.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/PJ_krovak.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/PJ_labrd.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/PJ_laea.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/PJ_lagrng.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/PJ_larr.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/PJ_lask.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/PJ_latlong.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/PJ_lcc.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/PJ_lcca.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/PJ_loxim.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/PJ_lsat.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/PJ_mbt_fps.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/PJ_mbtfpp.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/PJ_mbtfpq.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/PJ_merc.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/PJ_mill.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/PJ_misrsom.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/PJ_mod_ster.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/PJ_moll.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/PJ_molodensky.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/PJ_natearth.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/PJ_natearth2.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/PJ_nell.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/PJ_nell_h.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/PJ_nocol.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/PJ_nsper.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/PJ_nzmg.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/PJ_ob_tran.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/PJ_ocea.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/PJ_oea.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/PJ_omerc.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/PJ_ortho.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/PJ_patterson.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/PJ_pipeline.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/PJ_poly.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/PJ_putp2.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/PJ_putp3.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/PJ_putp4p.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/PJ_putp5.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/PJ_putp6.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/PJ_qsc.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/PJ_robin.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/PJ_rpoly.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/PJ_sch.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/PJ_sconics.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/PJ_somerc.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/PJ_stere.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/PJ_sterea.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/PJ_sts.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/PJ_tcc.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/PJ_tcea.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/PJ_times.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/PJ_tmerc.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/PJ_tpeqd.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/PJ_unitconvert.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/PJ_urm5.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/PJ_urmfps.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/PJ_vandg.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/PJ_vandg2.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/PJ_vandg4.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/PJ_vgridshift.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/PJ_wag2.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/PJ_wag3.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/PJ_wag7.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/PJ_wink1.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/PJ_wink2.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/aasincos.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/adjlon.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/bch2bps.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/bchgen.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/biveval.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/cct.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/cs2cs.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/dmstor.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/emess.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gen_cheb.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/geocent.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/geod.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/geod_interface.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/geod_set.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/geodesic.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/geodtest.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gie.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/jniproj.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/mk_cheby.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/multistresstest.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/nad2bin.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/nad_cvt.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/nad_init.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/nad_intr.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/p_series.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/pj_apply_gridshift.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/pj_apply_vgridshift.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/pj_auth.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/pj_ctx.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/pj_datum_set.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/pj_datums.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/pj_deriv.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/pj_ell_set.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/pj_ellps.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/pj_errno.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/pj_factors.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/pj_fileapi.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/pj_fwd.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/pj_gauss.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/pj_gc_reader.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/pj_geocent.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/pj_gridcatalog.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/pj_gridinfo.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/pj_gridlist.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/pj_init.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/pj_initcache.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/pj_internal.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/pj_inv.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/pj_list.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/pj_log.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/pj_malloc.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/pj_mlfn.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/pj_msfn.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/pj_mutex.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/pj_open_lib.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/pj_param.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/pj_phi2.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/pj_pr_list.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/pj_qsfn.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/pj_release.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/pj_strerrno.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/pj_strtod.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/pj_transform.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/pj_tsfn.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/pj_units.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/pj_utils.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/pj_zpoly1.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/proj.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/proj_4D_api.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/proj_etmerc.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/proj_mdist.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/proj_rouss.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/proj_strtod.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/rtodms.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/test228.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/vector1.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/PJ_aea.Plo at am__quote@ # am--include-marker
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/PJ_aeqd.Plo at am__quote@ # am--include-marker
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/PJ_airy.Plo at am__quote@ # am--include-marker
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/PJ_aitoff.Plo at am__quote@ # am--include-marker
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/PJ_august.Plo at am__quote@ # am--include-marker
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/PJ_axisswap.Plo at am__quote@ # am--include-marker
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/PJ_bacon.Plo at am__quote@ # am--include-marker
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/PJ_bipc.Plo at am__quote@ # am--include-marker
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/PJ_boggs.Plo at am__quote@ # am--include-marker
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/PJ_bonne.Plo at am__quote@ # am--include-marker
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/PJ_calcofi.Plo at am__quote@ # am--include-marker
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/PJ_cart.Plo at am__quote@ # am--include-marker
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/PJ_cass.Plo at am__quote@ # am--include-marker
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/PJ_cc.Plo at am__quote@ # am--include-marker
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/PJ_ccon.Plo at am__quote@ # am--include-marker
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/PJ_cea.Plo at am__quote@ # am--include-marker
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/PJ_chamb.Plo at am__quote@ # am--include-marker
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/PJ_collg.Plo at am__quote@ # am--include-marker
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/PJ_comill.Plo at am__quote@ # am--include-marker
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/PJ_crast.Plo at am__quote@ # am--include-marker
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/PJ_deformation.Plo at am__quote@ # am--include-marker
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/PJ_denoy.Plo at am__quote@ # am--include-marker
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/PJ_eck1.Plo at am__quote@ # am--include-marker
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/PJ_eck2.Plo at am__quote@ # am--include-marker
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/PJ_eck3.Plo at am__quote@ # am--include-marker
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/PJ_eck4.Plo at am__quote@ # am--include-marker
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/PJ_eck5.Plo at am__quote@ # am--include-marker
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/PJ_eqc.Plo at am__quote@ # am--include-marker
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/PJ_eqdc.Plo at am__quote@ # am--include-marker
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/PJ_fahey.Plo at am__quote@ # am--include-marker
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/PJ_fouc_s.Plo at am__quote@ # am--include-marker
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/PJ_gall.Plo at am__quote@ # am--include-marker
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/PJ_geoc.Plo at am__quote@ # am--include-marker
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/PJ_geos.Plo at am__quote@ # am--include-marker
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/PJ_gins8.Plo at am__quote@ # am--include-marker
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/PJ_gn_sinu.Plo at am__quote@ # am--include-marker
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/PJ_gnom.Plo at am__quote@ # am--include-marker
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/PJ_goode.Plo at am__quote@ # am--include-marker
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/PJ_gstmerc.Plo at am__quote@ # am--include-marker
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/PJ_hammer.Plo at am__quote@ # am--include-marker
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/PJ_hatano.Plo at am__quote@ # am--include-marker
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/PJ_healpix.Plo at am__quote@ # am--include-marker
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/PJ_helmert.Plo at am__quote@ # am--include-marker
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/PJ_hgridshift.Plo at am__quote@ # am--include-marker
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/PJ_horner.Plo at am__quote@ # am--include-marker
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/PJ_igh.Plo at am__quote@ # am--include-marker
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/PJ_imw_p.Plo at am__quote@ # am--include-marker
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/PJ_isea.Plo at am__quote@ # am--include-marker
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/PJ_krovak.Plo at am__quote@ # am--include-marker
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/PJ_labrd.Plo at am__quote@ # am--include-marker
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/PJ_laea.Plo at am__quote@ # am--include-marker
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/PJ_lagrng.Plo at am__quote@ # am--include-marker
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/PJ_larr.Plo at am__quote@ # am--include-marker
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/PJ_lask.Plo at am__quote@ # am--include-marker
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/PJ_latlong.Plo at am__quote@ # am--include-marker
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/PJ_lcc.Plo at am__quote@ # am--include-marker
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/PJ_lcca.Plo at am__quote@ # am--include-marker
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/PJ_loxim.Plo at am__quote@ # am--include-marker
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/PJ_lsat.Plo at am__quote@ # am--include-marker
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/PJ_mbt_fps.Plo at am__quote@ # am--include-marker
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/PJ_mbtfpp.Plo at am__quote@ # am--include-marker
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/PJ_mbtfpq.Plo at am__quote@ # am--include-marker
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/PJ_merc.Plo at am__quote@ # am--include-marker
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/PJ_mill.Plo at am__quote@ # am--include-marker
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/PJ_misrsom.Plo at am__quote@ # am--include-marker
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/PJ_mod_ster.Plo at am__quote@ # am--include-marker
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/PJ_moll.Plo at am__quote@ # am--include-marker
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/PJ_molodensky.Plo at am__quote@ # am--include-marker
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/PJ_natearth.Plo at am__quote@ # am--include-marker
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/PJ_natearth2.Plo at am__quote@ # am--include-marker
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/PJ_nell.Plo at am__quote@ # am--include-marker
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/PJ_nell_h.Plo at am__quote@ # am--include-marker
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/PJ_nocol.Plo at am__quote@ # am--include-marker
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/PJ_nsper.Plo at am__quote@ # am--include-marker
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/PJ_nzmg.Plo at am__quote@ # am--include-marker
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/PJ_ob_tran.Plo at am__quote@ # am--include-marker
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/PJ_ocea.Plo at am__quote@ # am--include-marker
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/PJ_oea.Plo at am__quote@ # am--include-marker
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/PJ_omerc.Plo at am__quote@ # am--include-marker
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/PJ_ortho.Plo at am__quote@ # am--include-marker
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/PJ_patterson.Plo at am__quote@ # am--include-marker
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/PJ_pipeline.Plo at am__quote@ # am--include-marker
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/PJ_poly.Plo at am__quote@ # am--include-marker
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/PJ_putp2.Plo at am__quote@ # am--include-marker
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/PJ_putp3.Plo at am__quote@ # am--include-marker
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/PJ_putp4p.Plo at am__quote@ # am--include-marker
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/PJ_putp5.Plo at am__quote@ # am--include-marker
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/PJ_putp6.Plo at am__quote@ # am--include-marker
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/PJ_qsc.Plo at am__quote@ # am--include-marker
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/PJ_robin.Plo at am__quote@ # am--include-marker
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/PJ_rpoly.Plo at am__quote@ # am--include-marker
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/PJ_sch.Plo at am__quote@ # am--include-marker
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/PJ_sconics.Plo at am__quote@ # am--include-marker
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/PJ_somerc.Plo at am__quote@ # am--include-marker
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/PJ_stere.Plo at am__quote@ # am--include-marker
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/PJ_sterea.Plo at am__quote@ # am--include-marker
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/PJ_sts.Plo at am__quote@ # am--include-marker
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/PJ_tcc.Plo at am__quote@ # am--include-marker
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/PJ_tcea.Plo at am__quote@ # am--include-marker
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/PJ_times.Plo at am__quote@ # am--include-marker
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/PJ_tmerc.Plo at am__quote@ # am--include-marker
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/PJ_tpeqd.Plo at am__quote@ # am--include-marker
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/PJ_unitconvert.Plo at am__quote@ # am--include-marker
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/PJ_urm5.Plo at am__quote@ # am--include-marker
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/PJ_urmfps.Plo at am__quote@ # am--include-marker
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/PJ_vandg.Plo at am__quote@ # am--include-marker
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/PJ_vandg2.Plo at am__quote@ # am--include-marker
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/PJ_vandg4.Plo at am__quote@ # am--include-marker
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/PJ_vgridshift.Plo at am__quote@ # am--include-marker
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/PJ_wag2.Plo at am__quote@ # am--include-marker
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/PJ_wag3.Plo at am__quote@ # am--include-marker
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/PJ_wag7.Plo at am__quote@ # am--include-marker
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/PJ_wink1.Plo at am__quote@ # am--include-marker
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/PJ_wink2.Plo at am__quote@ # am--include-marker
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/aasincos.Plo at am__quote@ # am--include-marker
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/adjlon.Plo at am__quote@ # am--include-marker
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/bch2bps.Plo at am__quote@ # am--include-marker
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/bchgen.Plo at am__quote@ # am--include-marker
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/biveval.Plo at am__quote@ # am--include-marker
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/cct.Po at am__quote@ # am--include-marker
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/cs2cs.Po at am__quote@ # am--include-marker
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/dmstor.Plo at am__quote@ # am--include-marker
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/emess.Plo at am__quote@ # am--include-marker
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gen_cheb.Po at am__quote@ # am--include-marker
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/geocent.Plo at am__quote@ # am--include-marker
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/geod.Po at am__quote@ # am--include-marker
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/geod_interface.Po at am__quote@ # am--include-marker
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/geod_set.Po at am__quote@ # am--include-marker
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/geodesic.Plo at am__quote@ # am--include-marker
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/geodtest.Po at am__quote@ # am--include-marker
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gie.Po at am__quote@ # am--include-marker
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/jniproj.Plo at am__quote@ # am--include-marker
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/mk_cheby.Plo at am__quote@ # am--include-marker
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/multistresstest.Po at am__quote@ # am--include-marker
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/nad2bin.Po at am__quote@ # am--include-marker
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/nad_cvt.Plo at am__quote@ # am--include-marker
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/nad_init.Plo at am__quote@ # am--include-marker
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/nad_intr.Plo at am__quote@ # am--include-marker
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/p_series.Po at am__quote@ # am--include-marker
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/pj_apply_gridshift.Plo at am__quote@ # am--include-marker
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/pj_apply_vgridshift.Plo at am__quote@ # am--include-marker
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/pj_auth.Plo at am__quote@ # am--include-marker
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/pj_ctx.Plo at am__quote@ # am--include-marker
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/pj_datum_set.Plo at am__quote@ # am--include-marker
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/pj_datums.Plo at am__quote@ # am--include-marker
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/pj_deriv.Plo at am__quote@ # am--include-marker
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/pj_ell_set.Plo at am__quote@ # am--include-marker
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/pj_ellps.Plo at am__quote@ # am--include-marker
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/pj_errno.Plo at am__quote@ # am--include-marker
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/pj_factors.Plo at am__quote@ # am--include-marker
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/pj_fileapi.Plo at am__quote@ # am--include-marker
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/pj_fwd.Plo at am__quote@ # am--include-marker
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/pj_gauss.Plo at am__quote@ # am--include-marker
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/pj_gc_reader.Plo at am__quote@ # am--include-marker
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/pj_geocent.Plo at am__quote@ # am--include-marker
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/pj_gridcatalog.Plo at am__quote@ # am--include-marker
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/pj_gridinfo.Plo at am__quote@ # am--include-marker
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/pj_gridlist.Plo at am__quote@ # am--include-marker
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/pj_init.Plo at am__quote@ # am--include-marker
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/pj_initcache.Plo at am__quote@ # am--include-marker
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/pj_internal.Plo at am__quote@ # am--include-marker
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/pj_inv.Plo at am__quote@ # am--include-marker
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/pj_list.Plo at am__quote@ # am--include-marker
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/pj_log.Plo at am__quote@ # am--include-marker
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/pj_malloc.Plo at am__quote@ # am--include-marker
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/pj_mlfn.Plo at am__quote@ # am--include-marker
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/pj_msfn.Plo at am__quote@ # am--include-marker
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/pj_mutex.Plo at am__quote@ # am--include-marker
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/pj_open_lib.Plo at am__quote@ # am--include-marker
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/pj_param.Plo at am__quote@ # am--include-marker
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/pj_phi2.Plo at am__quote@ # am--include-marker
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/pj_pr_list.Plo at am__quote@ # am--include-marker
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/pj_qsfn.Plo at am__quote@ # am--include-marker
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/pj_release.Plo at am__quote@ # am--include-marker
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/pj_strerrno.Plo at am__quote@ # am--include-marker
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/pj_strtod.Plo at am__quote@ # am--include-marker
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/pj_transform.Plo at am__quote@ # am--include-marker
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/pj_tsfn.Plo at am__quote@ # am--include-marker
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/pj_units.Plo at am__quote@ # am--include-marker
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/pj_utils.Plo at am__quote@ # am--include-marker
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/pj_zpoly1.Plo at am__quote@ # am--include-marker
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/proj.Po at am__quote@ # am--include-marker
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/proj_4D_api.Plo at am__quote@ # am--include-marker
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/proj_etmerc.Plo at am__quote@ # am--include-marker
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/proj_mdist.Plo at am__quote@ # am--include-marker
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/proj_rouss.Plo at am__quote@ # am--include-marker
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/proj_strtod.Po at am__quote@ # am--include-marker
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/rtodms.Plo at am__quote@ # am--include-marker
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/test228.Po at am__quote@ # am--include-marker
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/vector1.Plo at am__quote@ # am--include-marker
+
+$(am__depfiles_remade):
+	@$(MKDIR_P) $(@D)
+	@echo '# dummy' >$@-t && $(am__mv) $@-t $@
+
+am--depfiles: $(am__depfiles_remade)
 
 .c.o:
 @am__fastdepCC_TRUE@	$(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
@@ -1261,7 +1363,7 @@ $(TEST_SUITE_LOG): $(TEST_LOGS)
 	fi;								\
 	$$success || exit 1
 
-check-TESTS:
+check-TESTS: $(check_PROGRAMS)
 	@list='$(RECHECK_LOGS)';           test -z "$$list" || rm -f $$list
 	@list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list
 	@test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
@@ -1304,7 +1406,10 @@ geodtest.log: geodtest$(EXEEXT)
 @am__EXEEXT_TRUE@	$(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \
 @am__EXEEXT_TRUE@	"$$tst" $(AM_TESTS_FD_REDIRECT)
 
-distdir: $(DISTFILES)
+distdir: $(BUILT_SOURCES)
+	$(MAKE) $(AM_MAKEFLAGS) distdir-am
+
+distdir-am: $(DISTFILES)
 	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
 	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
 	list='$(DISTFILES)'; \
@@ -1338,11 +1443,11 @@ check-am: all-am
 	$(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS)
 	$(MAKE) $(AM_MAKEFLAGS) check-TESTS
 check: check-am
-all-am: Makefile $(LTLIBRARIES) $(PROGRAMS) $(HEADERS) proj_config.h
+all-am: Makefile $(PROGRAMS) $(LTLIBRARIES) $(HEADERS) proj_config.h
 install-binPROGRAMS: install-libLTLIBRARIES
 
 installdirs:
-	for dir in "$(DESTDIR)$(libdir)" "$(DESTDIR)$(bindir)" "$(DESTDIR)$(includedir)"; do \
+	for dir in "$(DESTDIR)$(bindir)" "$(DESTDIR)$(libdir)" "$(DESTDIR)$(includedir)"; do \
 	  test -z "$$dir" || $(MKDIR_P) "$$dir"; \
 	done
 install: install-am
@@ -1384,7 +1489,196 @@ clean-am: clean-binPROGRAMS clean-checkPROGRAMS clean-generic \
 	clean-libLTLIBRARIES clean-libtool mostlyclean-am
 
 distclean: distclean-am
-	-rm -rf ./$(DEPDIR)
+		-rm -f ./$(DEPDIR)/PJ_aea.Plo
+	-rm -f ./$(DEPDIR)/PJ_aeqd.Plo
+	-rm -f ./$(DEPDIR)/PJ_airy.Plo
+	-rm -f ./$(DEPDIR)/PJ_aitoff.Plo
+	-rm -f ./$(DEPDIR)/PJ_august.Plo
+	-rm -f ./$(DEPDIR)/PJ_axisswap.Plo
+	-rm -f ./$(DEPDIR)/PJ_bacon.Plo
+	-rm -f ./$(DEPDIR)/PJ_bipc.Plo
+	-rm -f ./$(DEPDIR)/PJ_boggs.Plo
+	-rm -f ./$(DEPDIR)/PJ_bonne.Plo
+	-rm -f ./$(DEPDIR)/PJ_calcofi.Plo
+	-rm -f ./$(DEPDIR)/PJ_cart.Plo
+	-rm -f ./$(DEPDIR)/PJ_cass.Plo
+	-rm -f ./$(DEPDIR)/PJ_cc.Plo
+	-rm -f ./$(DEPDIR)/PJ_ccon.Plo
+	-rm -f ./$(DEPDIR)/PJ_cea.Plo
+	-rm -f ./$(DEPDIR)/PJ_chamb.Plo
+	-rm -f ./$(DEPDIR)/PJ_collg.Plo
+	-rm -f ./$(DEPDIR)/PJ_comill.Plo
+	-rm -f ./$(DEPDIR)/PJ_crast.Plo
+	-rm -f ./$(DEPDIR)/PJ_deformation.Plo
+	-rm -f ./$(DEPDIR)/PJ_denoy.Plo
+	-rm -f ./$(DEPDIR)/PJ_eck1.Plo
+	-rm -f ./$(DEPDIR)/PJ_eck2.Plo
+	-rm -f ./$(DEPDIR)/PJ_eck3.Plo
+	-rm -f ./$(DEPDIR)/PJ_eck4.Plo
+	-rm -f ./$(DEPDIR)/PJ_eck5.Plo
+	-rm -f ./$(DEPDIR)/PJ_eqc.Plo
+	-rm -f ./$(DEPDIR)/PJ_eqdc.Plo
+	-rm -f ./$(DEPDIR)/PJ_fahey.Plo
+	-rm -f ./$(DEPDIR)/PJ_fouc_s.Plo
+	-rm -f ./$(DEPDIR)/PJ_gall.Plo
+	-rm -f ./$(DEPDIR)/PJ_geoc.Plo
+	-rm -f ./$(DEPDIR)/PJ_geos.Plo
+	-rm -f ./$(DEPDIR)/PJ_gins8.Plo
+	-rm -f ./$(DEPDIR)/PJ_gn_sinu.Plo
+	-rm -f ./$(DEPDIR)/PJ_gnom.Plo
+	-rm -f ./$(DEPDIR)/PJ_goode.Plo
+	-rm -f ./$(DEPDIR)/PJ_gstmerc.Plo
+	-rm -f ./$(DEPDIR)/PJ_hammer.Plo
+	-rm -f ./$(DEPDIR)/PJ_hatano.Plo
+	-rm -f ./$(DEPDIR)/PJ_healpix.Plo
+	-rm -f ./$(DEPDIR)/PJ_helmert.Plo
+	-rm -f ./$(DEPDIR)/PJ_hgridshift.Plo
+	-rm -f ./$(DEPDIR)/PJ_horner.Plo
+	-rm -f ./$(DEPDIR)/PJ_igh.Plo
+	-rm -f ./$(DEPDIR)/PJ_imw_p.Plo
+	-rm -f ./$(DEPDIR)/PJ_isea.Plo
+	-rm -f ./$(DEPDIR)/PJ_krovak.Plo
+	-rm -f ./$(DEPDIR)/PJ_labrd.Plo
+	-rm -f ./$(DEPDIR)/PJ_laea.Plo
+	-rm -f ./$(DEPDIR)/PJ_lagrng.Plo
+	-rm -f ./$(DEPDIR)/PJ_larr.Plo
+	-rm -f ./$(DEPDIR)/PJ_lask.Plo
+	-rm -f ./$(DEPDIR)/PJ_latlong.Plo
+	-rm -f ./$(DEPDIR)/PJ_lcc.Plo
+	-rm -f ./$(DEPDIR)/PJ_lcca.Plo
+	-rm -f ./$(DEPDIR)/PJ_loxim.Plo
+	-rm -f ./$(DEPDIR)/PJ_lsat.Plo
+	-rm -f ./$(DEPDIR)/PJ_mbt_fps.Plo
+	-rm -f ./$(DEPDIR)/PJ_mbtfpp.Plo
+	-rm -f ./$(DEPDIR)/PJ_mbtfpq.Plo
+	-rm -f ./$(DEPDIR)/PJ_merc.Plo
+	-rm -f ./$(DEPDIR)/PJ_mill.Plo
+	-rm -f ./$(DEPDIR)/PJ_misrsom.Plo
+	-rm -f ./$(DEPDIR)/PJ_mod_ster.Plo
+	-rm -f ./$(DEPDIR)/PJ_moll.Plo
+	-rm -f ./$(DEPDIR)/PJ_molodensky.Plo
+	-rm -f ./$(DEPDIR)/PJ_natearth.Plo
+	-rm -f ./$(DEPDIR)/PJ_natearth2.Plo
+	-rm -f ./$(DEPDIR)/PJ_nell.Plo
+	-rm -f ./$(DEPDIR)/PJ_nell_h.Plo
+	-rm -f ./$(DEPDIR)/PJ_nocol.Plo
+	-rm -f ./$(DEPDIR)/PJ_nsper.Plo
+	-rm -f ./$(DEPDIR)/PJ_nzmg.Plo
+	-rm -f ./$(DEPDIR)/PJ_ob_tran.Plo
+	-rm -f ./$(DEPDIR)/PJ_ocea.Plo
+	-rm -f ./$(DEPDIR)/PJ_oea.Plo
+	-rm -f ./$(DEPDIR)/PJ_omerc.Plo
+	-rm -f ./$(DEPDIR)/PJ_ortho.Plo
+	-rm -f ./$(DEPDIR)/PJ_patterson.Plo
+	-rm -f ./$(DEPDIR)/PJ_pipeline.Plo
+	-rm -f ./$(DEPDIR)/PJ_poly.Plo
+	-rm -f ./$(DEPDIR)/PJ_putp2.Plo
+	-rm -f ./$(DEPDIR)/PJ_putp3.Plo
+	-rm -f ./$(DEPDIR)/PJ_putp4p.Plo
+	-rm -f ./$(DEPDIR)/PJ_putp5.Plo
+	-rm -f ./$(DEPDIR)/PJ_putp6.Plo
+	-rm -f ./$(DEPDIR)/PJ_qsc.Plo
+	-rm -f ./$(DEPDIR)/PJ_robin.Plo
+	-rm -f ./$(DEPDIR)/PJ_rpoly.Plo
+	-rm -f ./$(DEPDIR)/PJ_sch.Plo
+	-rm -f ./$(DEPDIR)/PJ_sconics.Plo
+	-rm -f ./$(DEPDIR)/PJ_somerc.Plo
+	-rm -f ./$(DEPDIR)/PJ_stere.Plo
+	-rm -f ./$(DEPDIR)/PJ_sterea.Plo
+	-rm -f ./$(DEPDIR)/PJ_sts.Plo
+	-rm -f ./$(DEPDIR)/PJ_tcc.Plo
+	-rm -f ./$(DEPDIR)/PJ_tcea.Plo
+	-rm -f ./$(DEPDIR)/PJ_times.Plo
+	-rm -f ./$(DEPDIR)/PJ_tmerc.Plo
+	-rm -f ./$(DEPDIR)/PJ_tpeqd.Plo
+	-rm -f ./$(DEPDIR)/PJ_unitconvert.Plo
+	-rm -f ./$(DEPDIR)/PJ_urm5.Plo
+	-rm -f ./$(DEPDIR)/PJ_urmfps.Plo
+	-rm -f ./$(DEPDIR)/PJ_vandg.Plo
+	-rm -f ./$(DEPDIR)/PJ_vandg2.Plo
+	-rm -f ./$(DEPDIR)/PJ_vandg4.Plo
+	-rm -f ./$(DEPDIR)/PJ_vgridshift.Plo
+	-rm -f ./$(DEPDIR)/PJ_wag2.Plo
+	-rm -f ./$(DEPDIR)/PJ_wag3.Plo
+	-rm -f ./$(DEPDIR)/PJ_wag7.Plo
+	-rm -f ./$(DEPDIR)/PJ_wink1.Plo
+	-rm -f ./$(DEPDIR)/PJ_wink2.Plo
+	-rm -f ./$(DEPDIR)/aasincos.Plo
+	-rm -f ./$(DEPDIR)/adjlon.Plo
+	-rm -f ./$(DEPDIR)/bch2bps.Plo
+	-rm -f ./$(DEPDIR)/bchgen.Plo
+	-rm -f ./$(DEPDIR)/biveval.Plo
+	-rm -f ./$(DEPDIR)/cct.Po
+	-rm -f ./$(DEPDIR)/cs2cs.Po
+	-rm -f ./$(DEPDIR)/dmstor.Plo
+	-rm -f ./$(DEPDIR)/emess.Plo
+	-rm -f ./$(DEPDIR)/gen_cheb.Po
+	-rm -f ./$(DEPDIR)/geocent.Plo
+	-rm -f ./$(DEPDIR)/geod.Po
+	-rm -f ./$(DEPDIR)/geod_interface.Po
+	-rm -f ./$(DEPDIR)/geod_set.Po
+	-rm -f ./$(DEPDIR)/geodesic.Plo
+	-rm -f ./$(DEPDIR)/geodtest.Po
+	-rm -f ./$(DEPDIR)/gie.Po
+	-rm -f ./$(DEPDIR)/jniproj.Plo
+	-rm -f ./$(DEPDIR)/mk_cheby.Plo
+	-rm -f ./$(DEPDIR)/multistresstest.Po
+	-rm -f ./$(DEPDIR)/nad2bin.Po
+	-rm -f ./$(DEPDIR)/nad_cvt.Plo
+	-rm -f ./$(DEPDIR)/nad_init.Plo
+	-rm -f ./$(DEPDIR)/nad_intr.Plo
+	-rm -f ./$(DEPDIR)/p_series.Po
+	-rm -f ./$(DEPDIR)/pj_apply_gridshift.Plo
+	-rm -f ./$(DEPDIR)/pj_apply_vgridshift.Plo
+	-rm -f ./$(DEPDIR)/pj_auth.Plo
+	-rm -f ./$(DEPDIR)/pj_ctx.Plo
+	-rm -f ./$(DEPDIR)/pj_datum_set.Plo
+	-rm -f ./$(DEPDIR)/pj_datums.Plo
+	-rm -f ./$(DEPDIR)/pj_deriv.Plo
+	-rm -f ./$(DEPDIR)/pj_ell_set.Plo
+	-rm -f ./$(DEPDIR)/pj_ellps.Plo
+	-rm -f ./$(DEPDIR)/pj_errno.Plo
+	-rm -f ./$(DEPDIR)/pj_factors.Plo
+	-rm -f ./$(DEPDIR)/pj_fileapi.Plo
+	-rm -f ./$(DEPDIR)/pj_fwd.Plo
+	-rm -f ./$(DEPDIR)/pj_gauss.Plo
+	-rm -f ./$(DEPDIR)/pj_gc_reader.Plo
+	-rm -f ./$(DEPDIR)/pj_geocent.Plo
+	-rm -f ./$(DEPDIR)/pj_gridcatalog.Plo
+	-rm -f ./$(DEPDIR)/pj_gridinfo.Plo
+	-rm -f ./$(DEPDIR)/pj_gridlist.Plo
+	-rm -f ./$(DEPDIR)/pj_init.Plo
+	-rm -f ./$(DEPDIR)/pj_initcache.Plo
+	-rm -f ./$(DEPDIR)/pj_internal.Plo
+	-rm -f ./$(DEPDIR)/pj_inv.Plo
+	-rm -f ./$(DEPDIR)/pj_list.Plo
+	-rm -f ./$(DEPDIR)/pj_log.Plo
+	-rm -f ./$(DEPDIR)/pj_malloc.Plo
+	-rm -f ./$(DEPDIR)/pj_mlfn.Plo
+	-rm -f ./$(DEPDIR)/pj_msfn.Plo
+	-rm -f ./$(DEPDIR)/pj_mutex.Plo
+	-rm -f ./$(DEPDIR)/pj_open_lib.Plo
+	-rm -f ./$(DEPDIR)/pj_param.Plo
+	-rm -f ./$(DEPDIR)/pj_phi2.Plo
+	-rm -f ./$(DEPDIR)/pj_pr_list.Plo
+	-rm -f ./$(DEPDIR)/pj_qsfn.Plo
+	-rm -f ./$(DEPDIR)/pj_release.Plo
+	-rm -f ./$(DEPDIR)/pj_strerrno.Plo
+	-rm -f ./$(DEPDIR)/pj_strtod.Plo
+	-rm -f ./$(DEPDIR)/pj_transform.Plo
+	-rm -f ./$(DEPDIR)/pj_tsfn.Plo
+	-rm -f ./$(DEPDIR)/pj_units.Plo
+	-rm -f ./$(DEPDIR)/pj_utils.Plo
+	-rm -f ./$(DEPDIR)/pj_zpoly1.Plo
+	-rm -f ./$(DEPDIR)/proj.Po
+	-rm -f ./$(DEPDIR)/proj_4D_api.Plo
+	-rm -f ./$(DEPDIR)/proj_etmerc.Plo
+	-rm -f ./$(DEPDIR)/proj_mdist.Plo
+	-rm -f ./$(DEPDIR)/proj_rouss.Plo
+	-rm -f ./$(DEPDIR)/proj_strtod.Po
+	-rm -f ./$(DEPDIR)/rtodms.Plo
+	-rm -f ./$(DEPDIR)/test228.Po
+	-rm -f ./$(DEPDIR)/vector1.Plo
 	-rm -f Makefile
 distclean-am: clean-am distclean-compile distclean-generic \
 	distclean-hdr distclean-tags
@@ -1431,7 +1725,196 @@ install-ps-am:
 installcheck-am:
 
 maintainer-clean: maintainer-clean-am
-	-rm -rf ./$(DEPDIR)
+		-rm -f ./$(DEPDIR)/PJ_aea.Plo
+	-rm -f ./$(DEPDIR)/PJ_aeqd.Plo
+	-rm -f ./$(DEPDIR)/PJ_airy.Plo
+	-rm -f ./$(DEPDIR)/PJ_aitoff.Plo
+	-rm -f ./$(DEPDIR)/PJ_august.Plo
+	-rm -f ./$(DEPDIR)/PJ_axisswap.Plo
+	-rm -f ./$(DEPDIR)/PJ_bacon.Plo
+	-rm -f ./$(DEPDIR)/PJ_bipc.Plo
+	-rm -f ./$(DEPDIR)/PJ_boggs.Plo
+	-rm -f ./$(DEPDIR)/PJ_bonne.Plo
+	-rm -f ./$(DEPDIR)/PJ_calcofi.Plo
+	-rm -f ./$(DEPDIR)/PJ_cart.Plo
+	-rm -f ./$(DEPDIR)/PJ_cass.Plo
+	-rm -f ./$(DEPDIR)/PJ_cc.Plo
+	-rm -f ./$(DEPDIR)/PJ_ccon.Plo
+	-rm -f ./$(DEPDIR)/PJ_cea.Plo
+	-rm -f ./$(DEPDIR)/PJ_chamb.Plo
+	-rm -f ./$(DEPDIR)/PJ_collg.Plo
+	-rm -f ./$(DEPDIR)/PJ_comill.Plo
+	-rm -f ./$(DEPDIR)/PJ_crast.Plo
+	-rm -f ./$(DEPDIR)/PJ_deformation.Plo
+	-rm -f ./$(DEPDIR)/PJ_denoy.Plo
+	-rm -f ./$(DEPDIR)/PJ_eck1.Plo
+	-rm -f ./$(DEPDIR)/PJ_eck2.Plo
+	-rm -f ./$(DEPDIR)/PJ_eck3.Plo
+	-rm -f ./$(DEPDIR)/PJ_eck4.Plo
+	-rm -f ./$(DEPDIR)/PJ_eck5.Plo
+	-rm -f ./$(DEPDIR)/PJ_eqc.Plo
+	-rm -f ./$(DEPDIR)/PJ_eqdc.Plo
+	-rm -f ./$(DEPDIR)/PJ_fahey.Plo
+	-rm -f ./$(DEPDIR)/PJ_fouc_s.Plo
+	-rm -f ./$(DEPDIR)/PJ_gall.Plo
+	-rm -f ./$(DEPDIR)/PJ_geoc.Plo
+	-rm -f ./$(DEPDIR)/PJ_geos.Plo
+	-rm -f ./$(DEPDIR)/PJ_gins8.Plo
+	-rm -f ./$(DEPDIR)/PJ_gn_sinu.Plo
+	-rm -f ./$(DEPDIR)/PJ_gnom.Plo
+	-rm -f ./$(DEPDIR)/PJ_goode.Plo
+	-rm -f ./$(DEPDIR)/PJ_gstmerc.Plo
+	-rm -f ./$(DEPDIR)/PJ_hammer.Plo
+	-rm -f ./$(DEPDIR)/PJ_hatano.Plo
+	-rm -f ./$(DEPDIR)/PJ_healpix.Plo
+	-rm -f ./$(DEPDIR)/PJ_helmert.Plo
+	-rm -f ./$(DEPDIR)/PJ_hgridshift.Plo
+	-rm -f ./$(DEPDIR)/PJ_horner.Plo
+	-rm -f ./$(DEPDIR)/PJ_igh.Plo
+	-rm -f ./$(DEPDIR)/PJ_imw_p.Plo
+	-rm -f ./$(DEPDIR)/PJ_isea.Plo
+	-rm -f ./$(DEPDIR)/PJ_krovak.Plo
+	-rm -f ./$(DEPDIR)/PJ_labrd.Plo
+	-rm -f ./$(DEPDIR)/PJ_laea.Plo
+	-rm -f ./$(DEPDIR)/PJ_lagrng.Plo
+	-rm -f ./$(DEPDIR)/PJ_larr.Plo
+	-rm -f ./$(DEPDIR)/PJ_lask.Plo
+	-rm -f ./$(DEPDIR)/PJ_latlong.Plo
+	-rm -f ./$(DEPDIR)/PJ_lcc.Plo
+	-rm -f ./$(DEPDIR)/PJ_lcca.Plo
+	-rm -f ./$(DEPDIR)/PJ_loxim.Plo
+	-rm -f ./$(DEPDIR)/PJ_lsat.Plo
+	-rm -f ./$(DEPDIR)/PJ_mbt_fps.Plo
+	-rm -f ./$(DEPDIR)/PJ_mbtfpp.Plo
+	-rm -f ./$(DEPDIR)/PJ_mbtfpq.Plo
+	-rm -f ./$(DEPDIR)/PJ_merc.Plo
+	-rm -f ./$(DEPDIR)/PJ_mill.Plo
+	-rm -f ./$(DEPDIR)/PJ_misrsom.Plo
+	-rm -f ./$(DEPDIR)/PJ_mod_ster.Plo
+	-rm -f ./$(DEPDIR)/PJ_moll.Plo
+	-rm -f ./$(DEPDIR)/PJ_molodensky.Plo
+	-rm -f ./$(DEPDIR)/PJ_natearth.Plo
+	-rm -f ./$(DEPDIR)/PJ_natearth2.Plo
+	-rm -f ./$(DEPDIR)/PJ_nell.Plo
+	-rm -f ./$(DEPDIR)/PJ_nell_h.Plo
+	-rm -f ./$(DEPDIR)/PJ_nocol.Plo
+	-rm -f ./$(DEPDIR)/PJ_nsper.Plo
+	-rm -f ./$(DEPDIR)/PJ_nzmg.Plo
+	-rm -f ./$(DEPDIR)/PJ_ob_tran.Plo
+	-rm -f ./$(DEPDIR)/PJ_ocea.Plo
+	-rm -f ./$(DEPDIR)/PJ_oea.Plo
+	-rm -f ./$(DEPDIR)/PJ_omerc.Plo
+	-rm -f ./$(DEPDIR)/PJ_ortho.Plo
+	-rm -f ./$(DEPDIR)/PJ_patterson.Plo
+	-rm -f ./$(DEPDIR)/PJ_pipeline.Plo
+	-rm -f ./$(DEPDIR)/PJ_poly.Plo
+	-rm -f ./$(DEPDIR)/PJ_putp2.Plo
+	-rm -f ./$(DEPDIR)/PJ_putp3.Plo
+	-rm -f ./$(DEPDIR)/PJ_putp4p.Plo
+	-rm -f ./$(DEPDIR)/PJ_putp5.Plo
+	-rm -f ./$(DEPDIR)/PJ_putp6.Plo
+	-rm -f ./$(DEPDIR)/PJ_qsc.Plo
+	-rm -f ./$(DEPDIR)/PJ_robin.Plo
+	-rm -f ./$(DEPDIR)/PJ_rpoly.Plo
+	-rm -f ./$(DEPDIR)/PJ_sch.Plo
+	-rm -f ./$(DEPDIR)/PJ_sconics.Plo
+	-rm -f ./$(DEPDIR)/PJ_somerc.Plo
+	-rm -f ./$(DEPDIR)/PJ_stere.Plo
+	-rm -f ./$(DEPDIR)/PJ_sterea.Plo
+	-rm -f ./$(DEPDIR)/PJ_sts.Plo
+	-rm -f ./$(DEPDIR)/PJ_tcc.Plo
+	-rm -f ./$(DEPDIR)/PJ_tcea.Plo
+	-rm -f ./$(DEPDIR)/PJ_times.Plo
+	-rm -f ./$(DEPDIR)/PJ_tmerc.Plo
+	-rm -f ./$(DEPDIR)/PJ_tpeqd.Plo
+	-rm -f ./$(DEPDIR)/PJ_unitconvert.Plo
+	-rm -f ./$(DEPDIR)/PJ_urm5.Plo
+	-rm -f ./$(DEPDIR)/PJ_urmfps.Plo
+	-rm -f ./$(DEPDIR)/PJ_vandg.Plo
+	-rm -f ./$(DEPDIR)/PJ_vandg2.Plo
+	-rm -f ./$(DEPDIR)/PJ_vandg4.Plo
+	-rm -f ./$(DEPDIR)/PJ_vgridshift.Plo
+	-rm -f ./$(DEPDIR)/PJ_wag2.Plo
+	-rm -f ./$(DEPDIR)/PJ_wag3.Plo
+	-rm -f ./$(DEPDIR)/PJ_wag7.Plo
+	-rm -f ./$(DEPDIR)/PJ_wink1.Plo
+	-rm -f ./$(DEPDIR)/PJ_wink2.Plo
+	-rm -f ./$(DEPDIR)/aasincos.Plo
+	-rm -f ./$(DEPDIR)/adjlon.Plo
+	-rm -f ./$(DEPDIR)/bch2bps.Plo
+	-rm -f ./$(DEPDIR)/bchgen.Plo
+	-rm -f ./$(DEPDIR)/biveval.Plo
+	-rm -f ./$(DEPDIR)/cct.Po
+	-rm -f ./$(DEPDIR)/cs2cs.Po
+	-rm -f ./$(DEPDIR)/dmstor.Plo
+	-rm -f ./$(DEPDIR)/emess.Plo
+	-rm -f ./$(DEPDIR)/gen_cheb.Po
+	-rm -f ./$(DEPDIR)/geocent.Plo
+	-rm -f ./$(DEPDIR)/geod.Po
+	-rm -f ./$(DEPDIR)/geod_interface.Po
+	-rm -f ./$(DEPDIR)/geod_set.Po
+	-rm -f ./$(DEPDIR)/geodesic.Plo
+	-rm -f ./$(DEPDIR)/geodtest.Po
+	-rm -f ./$(DEPDIR)/gie.Po
+	-rm -f ./$(DEPDIR)/jniproj.Plo
+	-rm -f ./$(DEPDIR)/mk_cheby.Plo
+	-rm -f ./$(DEPDIR)/multistresstest.Po
+	-rm -f ./$(DEPDIR)/nad2bin.Po
+	-rm -f ./$(DEPDIR)/nad_cvt.Plo
+	-rm -f ./$(DEPDIR)/nad_init.Plo
+	-rm -f ./$(DEPDIR)/nad_intr.Plo
+	-rm -f ./$(DEPDIR)/p_series.Po
+	-rm -f ./$(DEPDIR)/pj_apply_gridshift.Plo
+	-rm -f ./$(DEPDIR)/pj_apply_vgridshift.Plo
+	-rm -f ./$(DEPDIR)/pj_auth.Plo
+	-rm -f ./$(DEPDIR)/pj_ctx.Plo
+	-rm -f ./$(DEPDIR)/pj_datum_set.Plo
+	-rm -f ./$(DEPDIR)/pj_datums.Plo
+	-rm -f ./$(DEPDIR)/pj_deriv.Plo
+	-rm -f ./$(DEPDIR)/pj_ell_set.Plo
+	-rm -f ./$(DEPDIR)/pj_ellps.Plo
+	-rm -f ./$(DEPDIR)/pj_errno.Plo
+	-rm -f ./$(DEPDIR)/pj_factors.Plo
+	-rm -f ./$(DEPDIR)/pj_fileapi.Plo
+	-rm -f ./$(DEPDIR)/pj_fwd.Plo
+	-rm -f ./$(DEPDIR)/pj_gauss.Plo
+	-rm -f ./$(DEPDIR)/pj_gc_reader.Plo
+	-rm -f ./$(DEPDIR)/pj_geocent.Plo
+	-rm -f ./$(DEPDIR)/pj_gridcatalog.Plo
+	-rm -f ./$(DEPDIR)/pj_gridinfo.Plo
+	-rm -f ./$(DEPDIR)/pj_gridlist.Plo
+	-rm -f ./$(DEPDIR)/pj_init.Plo
+	-rm -f ./$(DEPDIR)/pj_initcache.Plo
+	-rm -f ./$(DEPDIR)/pj_internal.Plo
+	-rm -f ./$(DEPDIR)/pj_inv.Plo
+	-rm -f ./$(DEPDIR)/pj_list.Plo
+	-rm -f ./$(DEPDIR)/pj_log.Plo
+	-rm -f ./$(DEPDIR)/pj_malloc.Plo
+	-rm -f ./$(DEPDIR)/pj_mlfn.Plo
+	-rm -f ./$(DEPDIR)/pj_msfn.Plo
+	-rm -f ./$(DEPDIR)/pj_mutex.Plo
+	-rm -f ./$(DEPDIR)/pj_open_lib.Plo
+	-rm -f ./$(DEPDIR)/pj_param.Plo
+	-rm -f ./$(DEPDIR)/pj_phi2.Plo
+	-rm -f ./$(DEPDIR)/pj_pr_list.Plo
+	-rm -f ./$(DEPDIR)/pj_qsfn.Plo
+	-rm -f ./$(DEPDIR)/pj_release.Plo
+	-rm -f ./$(DEPDIR)/pj_strerrno.Plo
+	-rm -f ./$(DEPDIR)/pj_strtod.Plo
+	-rm -f ./$(DEPDIR)/pj_transform.Plo
+	-rm -f ./$(DEPDIR)/pj_tsfn.Plo
+	-rm -f ./$(DEPDIR)/pj_units.Plo
+	-rm -f ./$(DEPDIR)/pj_utils.Plo
+	-rm -f ./$(DEPDIR)/pj_zpoly1.Plo
+	-rm -f ./$(DEPDIR)/proj.Po
+	-rm -f ./$(DEPDIR)/proj_4D_api.Plo
+	-rm -f ./$(DEPDIR)/proj_etmerc.Plo
+	-rm -f ./$(DEPDIR)/proj_mdist.Plo
+	-rm -f ./$(DEPDIR)/proj_rouss.Plo
+	-rm -f ./$(DEPDIR)/proj_strtod.Po
+	-rm -f ./$(DEPDIR)/rtodms.Plo
+	-rm -f ./$(DEPDIR)/test228.Po
+	-rm -f ./$(DEPDIR)/vector1.Plo
 	-rm -f Makefile
 maintainer-clean-am: distclean-am maintainer-clean-generic
 
@@ -1453,10 +1936,10 @@ uninstall-am: uninstall-binPROGRAMS uninstall-includeHEADERS \
 
 .MAKE: all check-am install-am install-strip
 
-.PHONY: CTAGS GTAGS TAGS all all-am check check-TESTS check-am clean \
-	clean-binPROGRAMS clean-checkPROGRAMS clean-generic \
-	clean-libLTLIBRARIES clean-libtool cscopelist-am ctags \
-	ctags-am distclean distclean-compile distclean-generic \
+.PHONY: CTAGS GTAGS TAGS all all-am am--depfiles check check-TESTS \
+	check-am clean clean-binPROGRAMS clean-checkPROGRAMS \
+	clean-generic clean-libLTLIBRARIES clean-libtool cscopelist-am \
+	ctags ctags-am distclean distclean-compile distclean-generic \
 	distclean-hdr distclean-libtool distclean-tags distdir dvi \
 	dvi-am html html-am info info-am install install-am \
 	install-binPROGRAMS install-data install-data-am install-dvi \
diff --git a/src/PJ_aea.c b/src/PJ_aea.c
index 74628f9..3fe9052 100644
--- a/src/PJ_aea.c
+++ b/src/PJ_aea.c
@@ -28,7 +28,7 @@
  *****************************************************************************/
 
 #define PJ_LIB__
-#include <proj.h>
+#include "proj.h"
 #include <errno.h>
 #include "projects.h"
 
diff --git a/src/PJ_aeqd.c b/src/PJ_aeqd.c
index b627b43..1cc5baf 100644
--- a/src/PJ_aeqd.c
+++ b/src/PJ_aeqd.c
@@ -27,7 +27,7 @@
 
 #define PJ_LIB__
 #include "geodesic.h"
-#include <proj.h>
+#include "proj.h"
 #include <errno.h>
 #include "projects.h"
 
diff --git a/src/PJ_airy.c b/src/PJ_airy.c
index c256a07..6addea7 100644
--- a/src/PJ_airy.c
+++ b/src/PJ_airy.c
@@ -27,7 +27,7 @@
  *****************************************************************************/
 
 #define PJ_LIB__
-#include <proj.h>
+#include "proj.h"
 #include <errno.h>
 #include "projects.h"
 
diff --git a/src/PJ_aitoff.c b/src/PJ_aitoff.c
index c4a5abd..89035f3 100644
--- a/src/PJ_aitoff.c
+++ b/src/PJ_aitoff.c
@@ -29,7 +29,7 @@
  *****************************************************************************/
 
 #define PJ_LIB__
-#include <proj.h>
+#include "proj.h"
 #include <errno.h>
 #include "projects.h"
 
diff --git a/src/PJ_bacon.c b/src/PJ_bacon.c
index 802ddcb..4ba70db 100644
--- a/src/PJ_bacon.c
+++ b/src/PJ_bacon.c
@@ -2,7 +2,7 @@
 # define EPS	1e-10
 #define PJ_LIB__
 #include	<errno.h>
-#include	<projects.h>
+#include	"projects.h"
 
 
 struct pj_opaque {
diff --git a/src/PJ_bipc.c b/src/PJ_bipc.c
index 4247fc1..48fc93d 100644
--- a/src/PJ_bipc.c
+++ b/src/PJ_bipc.c
@@ -1,5 +1,5 @@
 #define PJ_LIB__
-#include <proj.h>
+#include "proj.h"
 #include <errno.h>
 #include "projects.h"
 
diff --git a/src/PJ_boggs.c b/src/PJ_boggs.c
index 93de067..ed75350 100644
--- a/src/PJ_boggs.c
+++ b/src/PJ_boggs.c
@@ -1,6 +1,6 @@
 #define PJ_LIB__
 # include	<errno.h>
-# include	<projects.h>
+# include	"projects.h"
 PROJ_HEAD(boggs, "Boggs Eumorphic") "\n\tPCyl., no inv., Sph.";
 # define NITER	20
 # define EPS	1e-7
diff --git a/src/PJ_bonne.c b/src/PJ_bonne.c
index 4611c5d..40bb28e 100644
--- a/src/PJ_bonne.c
+++ b/src/PJ_bonne.c
@@ -1,6 +1,6 @@
 #define PJ_LIB__
 #include <errno.h>
-#include <proj.h>
+#include "proj.h"
 #include "projects.h"
 
 PROJ_HEAD(bonne, "Bonne (Werner lat_1=90)")
diff --git a/src/PJ_calcofi.c b/src/PJ_calcofi.c
index 955e82c..b51b409 100644
--- a/src/PJ_calcofi.c
+++ b/src/PJ_calcofi.c
@@ -1,5 +1,5 @@
 #define PJ_LIB__
-#include <proj.h>
+#include "proj.h"
 #include "projects.h"
 
 PROJ_HEAD(calcofi,
@@ -8,7 +8,7 @@ PROJ_HEAD(calcofi,
 #include <string.h>
 #include <stdio.h>
 #include <math.h>
-#include <proj_api.h>
+#include "proj_api.h"
 #include <errno.h>
 
 /* Conversions for the California Cooperative Oceanic Fisheries Investigations
diff --git a/src/PJ_cart.c b/src/PJ_cart.c
index 0746ec0..ec273f1 100644
--- a/src/PJ_cart.c
+++ b/src/PJ_cart.c
@@ -131,39 +131,39 @@ static double geocentric_radius (double a, double b, double phi) {
 
 
 /*********************************************************************/
-static XYZ cartesian (LPZ geodetic,  PJ *P) {
+static XYZ cartesian (LPZ geod,  PJ *P) {
 /*********************************************************************/
-    double N, cosphi = cos(geodetic.phi);
+    double N, cosphi = cos(geod.phi);
     XYZ xyz;
 
-    N   =  normal_radius_of_curvature(P->a, P->es, geodetic.phi);
+    N   =  normal_radius_of_curvature(P->a, P->es, geod.phi);
 
     /* HM formula 5-27 (z formula follows WP) */
-    xyz.x = (N + geodetic.z) * cosphi      * cos(geodetic.lam);
-    xyz.y = (N + geodetic.z) * cosphi      * sin(geodetic.lam);
-    xyz.z = (N * (1 - P->es) + geodetic.z) * sin(geodetic.phi);
+    xyz.x = (N + geod.z) * cosphi      * cos(geod.lam);
+    xyz.y = (N + geod.z) * cosphi      * sin(geod.lam);
+    xyz.z = (N * (1 - P->es) + geod.z) * sin(geod.phi);
 
     return xyz;
 }
 
 
 /*********************************************************************/
-static LPZ geodetic (XYZ cartesian,  PJ *P) {
+static LPZ geodetic (XYZ cart,  PJ *P) {
 /*********************************************************************/
     double N, p, theta, c, s;
     LPZ lpz;
 
     /* Perpendicular distance from point to Z-axis (HM eq. 5-28) */
-    p = hypot (cartesian.x, cartesian.y);
+    p = hypot (cart.x, cart.y);
 
     /* HM eq. (5-37) */
-    theta  =  atan2 (cartesian.z * P->a,  p * P->b);
+    theta  =  atan2 (cart.z * P->a,  p * P->b);
 
     /* HM eq. (5-36) (from BB, 1976) */
     c  =  cos(theta);
     s  =  sin(theta);
-    lpz.phi  =  atan2 (cartesian.z + P->e2s*P->b*s*s*s,  p - P->es*P->a*c*c*c);
-    lpz.lam  =  atan2 (cartesian.y, cartesian.x);
+    lpz.phi  =  atan2 (cart.z + P->e2s*P->b*s*s*s,  p - P->es*P->a*c*c*c);
+    lpz.lam  =  atan2 (cart.y, cart.x);
     N        =  normal_radius_of_curvature (P->a, P->es, lpz.phi);
 
 
@@ -174,7 +174,7 @@ static LPZ geodetic (XYZ cartesian,  PJ *P) {
         /* minus the geocentric radius of the Earth at the given */
         /* latitude                                              */
         double r = geocentric_radius (P->a, P->b, lpz.phi);
-        lpz.z = fabs (cartesian.z) - r;
+        lpz.z = fabs (cart.z) - r;
     }
     else
         lpz.z =  p / c  -  N;
diff --git a/src/PJ_cc.c b/src/PJ_cc.c
index 8a7da5b..4f41e3e 100644
--- a/src/PJ_cc.c
+++ b/src/PJ_cc.c
@@ -1,5 +1,5 @@
 #define PJ_LIB__
-#include <proj.h>
+#include "proj.h"
 #include "projects.h"
 
 PROJ_HEAD(cc, "Central Cylindrical") "\n\tCyl, Sph";
diff --git a/src/PJ_ccon.c b/src/PJ_ccon.c
index a8c178d..02b1438 100644
--- a/src/PJ_ccon.c
+++ b/src/PJ_ccon.c
@@ -22,7 +22,7 @@
 
 #define PJ_LIB__
 #include <errno.h>
-#include <proj.h>
+#include "proj.h"
 #include "projects.h"
 
 #define EPS10   1e-10
diff --git a/src/PJ_cea.c b/src/PJ_cea.c
index 60ed3a3..e7a3389 100644
--- a/src/PJ_cea.c
+++ b/src/PJ_cea.c
@@ -1,6 +1,6 @@
 #define PJ_LIB__
 #include <errno.h>
-#include <proj.h>
+#include "proj.h"
 #include "projects.h"
 
 struct pj_opaque {
diff --git a/src/PJ_chamb.c b/src/PJ_chamb.c
index d0b9250..ca9c5ed 100644
--- a/src/PJ_chamb.c
+++ b/src/PJ_chamb.c
@@ -1,6 +1,6 @@
 #define PJ_LIB__
 #include <errno.h>
-#include <proj.h>
+#include "proj.h"
 #include "projects.h"
 
 typedef struct { double r, Az; } VECT;
diff --git a/src/PJ_collg.c b/src/PJ_collg.c
index bf7d9f1..3d7f0d8 100644
--- a/src/PJ_collg.c
+++ b/src/PJ_collg.c
@@ -1,5 +1,5 @@
 #define PJ_LIB__
-#include <proj.h>
+#include "proj.h"
 #include "projects.h"
 
 PROJ_HEAD(collg, "Collignon") "\n\tPCyl, Sph.";
diff --git a/src/PJ_comill.c b/src/PJ_comill.c
index a34762e..ba0744c 100644
--- a/src/PJ_comill.c
+++ b/src/PJ_comill.c
@@ -7,7 +7,7 @@ Port to PROJ.4 by Bojan Savric, 4 April 2016
 */
 
 #define PJ_LIB__
-#include    <projects.h>
+#include    "projects.h"
 
 PROJ_HEAD(comill, "Compact Miller") "\n\tCyl., Sph.";
 
diff --git a/src/PJ_crast.c b/src/PJ_crast.c
index 8118211..dec22fa 100644
--- a/src/PJ_crast.c
+++ b/src/PJ_crast.c
@@ -1,5 +1,5 @@
 #define PJ_LIB__
-# include   <projects.h>
+# include   "projects.h"
 
 PROJ_HEAD(crast, "Craster Parabolic (Putnins P4)") "\n\tPCyl., Sph.";
 
diff --git a/src/PJ_deformation.c b/src/PJ_deformation.c
index 797af00..d6376e4 100644
--- a/src/PJ_deformation.c
+++ b/src/PJ_deformation.c
@@ -53,7 +53,7 @@ grid-values in units of mm/year in ENU-space.
 ***********************************************************************/
 #define PJ_LIB__
 #include <errno.h>
-#include <proj.h>
+#include "proj.h"
 #include "proj_internal.h"
 #include "projects.h"
 
diff --git a/src/PJ_denoy.c b/src/PJ_denoy.c
index d89a7e3..a5fc2fe 100644
--- a/src/PJ_denoy.c
+++ b/src/PJ_denoy.c
@@ -1,5 +1,5 @@
 #define PJ_LIB__
-#include    <projects.h>
+#include    "projects.h"
 
 PROJ_HEAD(denoy, "Denoyer Semi-Elliptical") "\n\tPCyl., no inv., Sph.";
 
diff --git a/src/PJ_eck2.c b/src/PJ_eck2.c
index b953b54..b87f3d9 100644
--- a/src/PJ_eck2.c
+++ b/src/PJ_eck2.c
@@ -1,5 +1,5 @@
 #define PJ_LIB__
-#include <proj.h>
+#include "proj.h"
 #include "projects.h"
 
 PROJ_HEAD(eck2, "Eckert II") "\n\tPCyl. Sph.";
diff --git a/src/PJ_eck4.c b/src/PJ_eck4.c
index a95c10b..7cd2472 100644
--- a/src/PJ_eck4.c
+++ b/src/PJ_eck4.c
@@ -1,5 +1,5 @@
 #define PJ_LIB__
-#include    <projects.h>
+#include    "projects.h"
 
 PROJ_HEAD(eck4, "Eckert IV") "\n\tPCyl, Sph.";
 
diff --git a/src/PJ_eqc.c b/src/PJ_eqc.c
index 908147a..9c80f82 100644
--- a/src/PJ_eqc.c
+++ b/src/PJ_eqc.c
@@ -1,6 +1,6 @@
 #define PJ_LIB__
 #include <errno.h>
-#include <proj.h>
+#include "proj.h"
 #include "projects.h"
 
 struct pj_opaque {
diff --git a/src/PJ_eqdc.c b/src/PJ_eqdc.c
index 6846aba..f36e051 100644
--- a/src/PJ_eqdc.c
+++ b/src/PJ_eqdc.c
@@ -1,6 +1,6 @@
 #define PJ_LIB__
 #include <errno.h>
-#include <proj.h>
+#include "proj.h"
 #include "projects.h"
 
 struct pj_opaque {
diff --git a/src/PJ_fahey.c b/src/PJ_fahey.c
index 5360611..90ed691 100644
--- a/src/PJ_fahey.c
+++ b/src/PJ_fahey.c
@@ -1,5 +1,5 @@
 #define PJ_LIB__
-#include <projects.h>
+#include "projects.h"
 
 PROJ_HEAD(fahey, "Fahey") "\n\tPcyl, Sph.";
 
diff --git a/src/PJ_fouc_s.c b/src/PJ_fouc_s.c
index b8ae4a0..8752626 100644
--- a/src/PJ_fouc_s.c
+++ b/src/PJ_fouc_s.c
@@ -1,6 +1,6 @@
 #define PJ_LIB__
 #include <errno.h>
-#include <proj.h>
+#include "proj.h"
 #include "projects.h"
 
 PROJ_HEAD(fouc_s, "Foucaut Sinusoidal") "\n\tPCyl., Sph.";
diff --git a/src/PJ_gall.c b/src/PJ_gall.c
index cb213e2..ca8a1bc 100644
--- a/src/PJ_gall.c
+++ b/src/PJ_gall.c
@@ -1,5 +1,5 @@
 #define PJ_LIB__
-#include <projects.h>
+#include "projects.h"
 
 PROJ_HEAD(gall, "Gall (Gall Stereographic)") "\n\tCyl, Sph";
 
diff --git a/src/PJ_geoc.c b/src/PJ_geoc.c
index 038da60..e7a7abf 100644
--- a/src/PJ_geoc.c
+++ b/src/PJ_geoc.c
@@ -27,7 +27,7 @@
  *****************************************************************************/
 
 #define PJ_LIB__
-#include <proj.h>
+#include "proj.h"
 #include <errno.h>
 #include "projects.h"
 
diff --git a/src/PJ_geos.c b/src/PJ_geos.c
index a787db2..d830c32 100644
--- a/src/PJ_geos.c
+++ b/src/PJ_geos.c
@@ -29,7 +29,7 @@
 
 #define PJ_LIB__
 #include <errno.h>
-#include <proj.h>
+#include "proj.h"
 #include "projects.h"
 
 struct pj_opaque {
diff --git a/src/PJ_gn_sinu.c b/src/PJ_gn_sinu.c
index 585d43c..36f438e 100644
--- a/src/PJ_gn_sinu.c
+++ b/src/PJ_gn_sinu.c
@@ -1,6 +1,6 @@
 #define PJ_LIB__
 #include <errno.h>
-#include <proj.h>
+#include "proj.h"
 #include "projects.h"
 
 PROJ_HEAD(gn_sinu, "General Sinusoidal Series") "\n\tPCyl, Sph.\n\tm= n=";
diff --git a/src/PJ_gnom.c b/src/PJ_gnom.c
index 1277456..8bb24b6 100644
--- a/src/PJ_gnom.c
+++ b/src/PJ_gnom.c
@@ -1,6 +1,6 @@
 #define PJ_LIB__
 #include <errno.h>
-#include <proj.h>
+#include "proj.h"
 #include "projects.h"
 
 PROJ_HEAD(gnom, "Gnomonic") "\n\tAzi, Sph.";
diff --git a/src/PJ_goode.c b/src/PJ_goode.c
index 34312b3..1554fd4 100644
--- a/src/PJ_goode.c
+++ b/src/PJ_goode.c
@@ -1,6 +1,6 @@
 #define PJ_LIB__
 #include <errno.h>
-#include <proj.h>
+#include "proj.h"
 #include "projects.h"
 
 PROJ_HEAD(goode, "Goode Homolosine") "\n\tPCyl, Sph.";
diff --git a/src/PJ_hammer.c b/src/PJ_hammer.c
index 4cdaba8..e7546ac 100644
--- a/src/PJ_hammer.c
+++ b/src/PJ_hammer.c
@@ -1,6 +1,6 @@
 #define PJ_LIB__
 #include <errno.h>
-#include <proj.h>
+#include "proj.h"
 #include "projects.h"
 
 PROJ_HEAD(hammer, "Hammer & Eckert-Greifendorff")
diff --git a/src/PJ_hatano.c b/src/PJ_hatano.c
index 79f46a7..985bf0c 100644
--- a/src/PJ_hatano.c
+++ b/src/PJ_hatano.c
@@ -1,5 +1,5 @@
 #define PJ_LIB__
-#include <proj.h>
+#include "proj.h"
 #include "projects.h"
 
 PROJ_HEAD(hatano, "Hatano Asymmetrical Equal Area") "\n\tPCyl, Sph.";
diff --git a/src/PJ_healpix.c b/src/PJ_healpix.c
index 2d62050..f3a9c0f 100644
--- a/src/PJ_healpix.c
+++ b/src/PJ_healpix.c
@@ -31,7 +31,7 @@
 # define PJ_LIB__
 # include <errno.h>
 # include "proj_internal.h"
-# include <proj.h>
+# include "proj.h"
 # include "projects.h"
 
 PROJ_HEAD(healpix, "HEALPix") "\n\tSph., Ellps.";
@@ -71,7 +71,7 @@ static const double rot[7][2][2] = ROT;
  * @param v the parameter whose sign is returned.
  * @return 1 for positive number, -1 for negative, and 0 for zero.
  **/
-static double pj_sign (double v) {
+static double sign (double v) {
     return v > 0 ? 1 : (v < 0 ? -1 : 0);
 }
 
@@ -236,7 +236,7 @@ static double auth_lat(PJ *P, double alpha, int inverse) {
 
         if (fabs(ratio) > 1) {
             /* Rounding error. */
-            ratio = pj_sign(ratio);
+            ratio = sign(ratio);
         }
         return asin(ratio);
     } else {
@@ -269,7 +269,7 @@ static XY healpix_sphere(LP lp) {
         }
         lamc = -3*M_FORTPI + M_HALFPI*cn;
         xy.x = lamc + (lam - lamc)*sigma;
-        xy.y = pj_sign(phi)*M_FORTPI*(2 - sigma);
+        xy.y = sign(phi)*M_FORTPI*(2 - sigma);
     }
     return xy;
 }
@@ -297,10 +297,10 @@ static LP healpix_sphere_inverse(XY xy) {
         xc = -3*M_FORTPI + M_HALFPI*cn;
         tau = 2.0 - 4*fabs(y)/M_PI;
         lp.lam = xc + (x - xc)/tau;
-        lp.phi = pj_sign(y)*asin(1.0 - pow(tau, 2)/3.0);
+        lp.phi = sign(y)*asin(1.0 - pow(tau, 2)/3.0);
     } else {
         lp.lam = -M_PI;
-        lp.phi = pj_sign(y)*M_HALFPI;
+        lp.phi = sign(y)*M_HALFPI;
     }
     return (lp);
 }
diff --git a/src/PJ_horner.c b/src/PJ_horner.c
index a132eff..76ccf33 100644
--- a/src/PJ_horner.c
+++ b/src/PJ_horner.c
@@ -436,7 +436,7 @@ static int parse_coefs (PJ *P, double *coefs, char *param, int ncoefs) {
 /*********************************************************************/
 PJ *PROJECTION(horner) {
 /*********************************************************************/
-    int   degree = 0, n, complex_horner = 0;
+    int   degree = 0, n, complex_polynomia = 0;
     HORNER *Q;
     P->fwd4d  = horner_forward_4d;
     P->inv4d  = horner_reverse_4d;
@@ -456,14 +456,14 @@ PJ *PROJECTION(horner) {
     }
 
     if (pj_param (P->ctx, P->params, "tfwd_c").i || pj_param (P->ctx, P->params, "tinv_c").i) /* complex polynomium? */
-		complex_horner = 1;
+		complex_polynomia = 1;
 
-    Q = horner_alloc (degree, complex_horner);
+    Q = horner_alloc (degree, complex_polynomia);
     if (Q == 0)
         return horner_freeup (P, ENOMEM);
     P->opaque = (void *) Q;
 
-    if (complex_horner) {
+    if (complex_polynomia) {
         /* Westings and/or southings? */
         Q->uneg = pj_param_exists (P->params, "uneg") ? 1 : 0;
         Q->vneg = pj_param_exists (P->params, "vneg") ? 1 : 0;
diff --git a/src/PJ_imw_p.c b/src/PJ_imw_p.c
index 9ebb8b4..bad9845 100644
--- a/src/PJ_imw_p.c
+++ b/src/PJ_imw_p.c
@@ -1,6 +1,6 @@
 #define PJ_LIB__
 #include <errno.h>
-#include <proj.h>
+#include "proj.h"
 #include "projects.h"
 
 PROJ_HEAD(imw_p, "International Map of the World Polyconic")
diff --git a/src/PJ_isea.c b/src/PJ_isea.c
index 5cc71c0..f08a83f 100644
--- a/src/PJ_isea.c
+++ b/src/PJ_isea.c
@@ -1027,7 +1027,7 @@ isea_forward(struct isea_dgg *g, struct isea_geo *in)
 
 #define PJ_LIB__
 #include <errno.h>
-#include <proj.h>
+#include "proj.h"
 #include "projects.h"
 
 PROJ_HEAD(isea, "Icosahedral Snyder Equal Area") "\n\tSph";
diff --git a/src/PJ_laea.c b/src/PJ_laea.c
index 9edd555..0422784 100644
--- a/src/PJ_laea.c
+++ b/src/PJ_laea.c
@@ -1,6 +1,6 @@
 #define PJ_LIB__
 #include <errno.h>
-#include <proj.h>
+#include "proj.h"
 #include "projects.h"
 
 PROJ_HEAD(laea, "Lambert Azimuthal Equal Area") "\n\tAzi, Sph&Ell";
diff --git a/src/PJ_lagrng.c b/src/PJ_lagrng.c
index b4744ed..cf6d97d 100644
--- a/src/PJ_lagrng.c
+++ b/src/PJ_lagrng.c
@@ -1,6 +1,6 @@
 #define PJ_LIB__
 #include <errno.h>
-#include <proj.h>
+#include "proj.h"
 #include "projects.h"
 
 PROJ_HEAD(lagrng, "Lagrange") "\n\tMisc Sph, no inv.\n\tW=";
diff --git a/src/PJ_lcc.c b/src/PJ_lcc.c
index a24d5ac..863f6be 100644
--- a/src/PJ_lcc.c
+++ b/src/PJ_lcc.c
@@ -1,6 +1,6 @@
 #define PJ_LIB__
 #include <errno.h>
-#include <proj.h>
+#include "proj.h"
 #include "projects.h"
 
 PROJ_HEAD(lcc, "Lambert Conformal Conic")
diff --git a/src/PJ_lcca.c b/src/PJ_lcca.c
index 61b2ed0..efae5c7 100644
--- a/src/PJ_lcca.c
+++ b/src/PJ_lcca.c
@@ -47,7 +47,7 @@
 
 #define PJ_LIB__
 #include <errno.h>
-#include <proj.h>
+#include "proj.h"
 #include "projects.h"
 
 PROJ_HEAD(lcca, "Lambert Conformal Conic Alternative")
diff --git a/src/PJ_loxim.c b/src/PJ_loxim.c
index bb87071..36b05b8 100644
--- a/src/PJ_loxim.c
+++ b/src/PJ_loxim.c
@@ -1,6 +1,6 @@
 #define PJ_LIB__
 #include <errno.h>
-#include <proj.h>
+#include "proj.h"
 #include "projects.h"
 
 PROJ_HEAD(loxim, "Loximuthal") "\n\tPCyl Sph";
diff --git a/src/PJ_lsat.c b/src/PJ_lsat.c
index 65b20fe..4b77f3d 100644
--- a/src/PJ_lsat.c
+++ b/src/PJ_lsat.c
@@ -1,7 +1,7 @@
 /* based upon Snyder and Linck, USGS-NMD */
 #define PJ_LIB__
 #include <errno.h>
-#include <proj.h>
+#include "proj.h"
 #include "projects.h"
 
 PROJ_HEAD(lsat, "Space oblique for LANDSAT")
diff --git a/src/PJ_mbtfpp.c b/src/PJ_mbtfpp.c
index 3bf2fa9..9b90444 100644
--- a/src/PJ_mbtfpp.c
+++ b/src/PJ_mbtfpp.c
@@ -1,5 +1,5 @@
 #define PJ_LIB__
-#include <proj.h>
+#include "proj.h"
 #include "projects.h"
 
 PROJ_HEAD(mbtfpp, "McBride-Thomas Flat-Polar Parabolic") "\n\tCyl., Sph.";
diff --git a/src/PJ_mbtfpq.c b/src/PJ_mbtfpq.c
index 4a0d48d..cff7fbd 100644
--- a/src/PJ_mbtfpq.c
+++ b/src/PJ_mbtfpq.c
@@ -1,5 +1,5 @@
 #define PJ_LIB__
-#include <proj.h>
+#include "proj.h"
 #include "projects.h"
 
 PROJ_HEAD(mbtfpq, "McBryde-Thomas Flat-Polar Quartic") "\n\tCyl., Sph.";
diff --git a/src/PJ_merc.c b/src/PJ_merc.c
index 5e0827b..18303c4 100644
--- a/src/PJ_merc.c
+++ b/src/PJ_merc.c
@@ -1,5 +1,5 @@
 #define PJ_LIB__
-#include <proj.h>
+#include "proj.h"
 #include "projects.h"
 
 PROJ_HEAD(merc, "Mercator") "\n\tCyl, Sph&Ell\n\tlat_ts=";
diff --git a/src/PJ_misrsom.c b/src/PJ_misrsom.c
index d23f5fa..c25ca59 100644
--- a/src/PJ_misrsom.c
+++ b/src/PJ_misrsom.c
@@ -22,7 +22,7 @@
 /* based upon Snyder and Linck, USGS-NMD */
 #define PJ_LIB__
 #include <errno.h>
-#include <proj.h>
+#include "proj.h"
 #include "projects.h"
 
 PROJ_HEAD(misrsom, "Space oblique for MISR")
diff --git a/src/PJ_molodensky.c b/src/PJ_molodensky.c
index b537e80..92969d6 100644
--- a/src/PJ_molodensky.c
+++ b/src/PJ_molodensky.c
@@ -44,7 +44,7 @@
 ***********************************************************************/
 #define PJ_LIB__
 #include <errno.h>
-#include <proj.h>
+#include "proj.h"
 #include "proj_internal.h"
 #include "projects.h"
 
diff --git a/src/PJ_nsper.c b/src/PJ_nsper.c
index 0b3a1d1..f3d0f74 100644
--- a/src/PJ_nsper.c
+++ b/src/PJ_nsper.c
@@ -1,6 +1,6 @@
 #define PJ_LIB__
 #include <errno.h>
-#include <proj.h>
+#include "proj.h"
 #include "projects.h"
 
 enum Mode {
diff --git a/src/PJ_ob_tran.c b/src/PJ_ob_tran.c
index c447ac0..e697113 100644
--- a/src/PJ_ob_tran.c
+++ b/src/PJ_ob_tran.c
@@ -1,6 +1,6 @@
 #define PJ_LIB__
 #include <errno.h>
-#include <proj.h>
+#include "proj.h"
 #include "projects.h"
 #include <string.h>
 
diff --git a/src/PJ_ocea.c b/src/PJ_ocea.c
index 3376018..4bd120e 100644
--- a/src/PJ_ocea.c
+++ b/src/PJ_ocea.c
@@ -1,6 +1,6 @@
 #define PJ_LIB__
 #include <errno.h>
-#include <projects.h>
+#include "projects.h"
 
 PROJ_HEAD(ocea, "Oblique Cylindrical Equal Area") "\n\tCyl, Sph"
     "lonc= alpha= or\n\tlat_1= lat_2= lon_1= lon_2=";
diff --git a/src/PJ_oea.c b/src/PJ_oea.c
index 58ea7e9..5112896 100644
--- a/src/PJ_oea.c
+++ b/src/PJ_oea.c
@@ -1,6 +1,6 @@
 #define PJ_LIB__
 #include <errno.h>
-#include <proj.h>
+#include "proj.h"
 #include "projects.h"
 
 PROJ_HEAD(oea, "Oblated Equal Area") "\n\tMisc Sph\n\tn= m= theta=";
diff --git a/src/PJ_omerc.c b/src/PJ_omerc.c
index eca5b24..893a91e 100644
--- a/src/PJ_omerc.c
+++ b/src/PJ_omerc.c
@@ -23,7 +23,7 @@
 */
 #define PJ_LIB__
 #include <errno.h>
-#include <proj.h>
+#include "proj.h"
 #include "projects.h"
 
 PROJ_HEAD(omerc, "Oblique Mercator")
diff --git a/src/PJ_ortho.c b/src/PJ_ortho.c
index 4da8247..5b3770d 100644
--- a/src/PJ_ortho.c
+++ b/src/PJ_ortho.c
@@ -1,6 +1,6 @@
 #define PJ_LIB__
 #include <errno.h>
-#include <proj.h>
+#include "proj.h"
 #include "projects.h"
 
 PROJ_HEAD(ortho, "Orthographic") "\n\tAzi, Sph.";
diff --git a/src/PJ_patterson.c b/src/PJ_patterson.c
index 0a1113a..e58b49b 100644
--- a/src/PJ_patterson.c
+++ b/src/PJ_patterson.c
@@ -39,7 +39,7 @@
  */
 
 #define PJ_LIB__
-#include <projects.h>
+#include "projects.h"
 
 PROJ_HEAD(patterson, "Patterson Cylindrical") "\n\tCyl.";
 
diff --git a/src/PJ_pipeline.c b/src/PJ_pipeline.c
index 25c7a95..3890f55 100644
--- a/src/PJ_pipeline.c
+++ b/src/PJ_pipeline.c
@@ -95,8 +95,8 @@ Thomas Knudsen, thokn at sdfe.dk, 2016-05-20
 ********************************************************************************/
 
 #define PJ_LIB__
-#include <geodesic.h>
-#include <proj.h>
+#include "geodesic.h"
+#include "proj.h"
 #include "proj_internal.h"
 #include "projects.h"
 
diff --git a/src/PJ_poly.c b/src/PJ_poly.c
index 7a8fc44..7cf8bce 100644
--- a/src/PJ_poly.c
+++ b/src/PJ_poly.c
@@ -1,6 +1,6 @@
 #define PJ_LIB__
 #include <errno.h>
-#include <proj.h>
+#include "proj.h"
 #include "projects.h"
 
 PROJ_HEAD(poly, "Polyconic (American)")
diff --git a/src/PJ_putp3.c b/src/PJ_putp3.c
index acc777b..d0db876 100644
--- a/src/PJ_putp3.c
+++ b/src/PJ_putp3.c
@@ -1,6 +1,6 @@
 #define PJ_LIB__
 #include <errno.h>
-#include <projects.h>
+#include "projects.h"
 
 struct pj_opaque {
     double  A;
diff --git a/src/PJ_putp6.c b/src/PJ_putp6.c
index 8c4efa6..938cef0 100644
--- a/src/PJ_putp6.c
+++ b/src/PJ_putp6.c
@@ -1,6 +1,6 @@
 #define PJ_LIB__
 #include <errno.h>
-#include <projects.h>
+#include "projects.h"
 
 struct pj_opaque {
     double C_x, C_y, A, B, D;
diff --git a/src/PJ_robin.c b/src/PJ_robin.c
index 7532ff7..7514b32 100644
--- a/src/PJ_robin.c
+++ b/src/PJ_robin.c
@@ -1,5 +1,5 @@
 #define PJ_LIB__
-#include <proj.h>
+#include "proj.h"
 #include "projects.h"
 
 PROJ_HEAD(robin, "Robinson") "\n\tPCyl., Sph.";
diff --git a/src/PJ_sch.c b/src/PJ_sch.c
index c404fc9..e9e67ff 100644
--- a/src/PJ_sch.c
+++ b/src/PJ_sch.c
@@ -32,7 +32,7 @@
 
 #define PJ_LIB__
 #include <errno.h>
-#include <proj.h>
+#include "proj.h"
 #include "projects.h"
 #include "geocent.h"
 
diff --git a/src/PJ_sconics.c b/src/PJ_sconics.c
index b94fca1..34a0f1f 100644
--- a/src/PJ_sconics.c
+++ b/src/PJ_sconics.c
@@ -1,6 +1,6 @@
 #define PJ_LIB__
 #include <errno.h>
-#include <proj.h>
+#include "proj.h"
 #include "projects.h"
 
 
diff --git a/src/PJ_somerc.c b/src/PJ_somerc.c
index 8222ca2..02df586 100644
--- a/src/PJ_somerc.c
+++ b/src/PJ_somerc.c
@@ -1,6 +1,6 @@
 #define PJ_LIB__
 #include <errno.h>
-#include <proj.h>
+#include "proj.h"
 #include "projects.h"
 
 PROJ_HEAD(somerc, "Swiss. Obl. Mercator") "\n\tCyl, Ell\n\tFor CH1903";
diff --git a/src/PJ_stere.c b/src/PJ_stere.c
index c01b86f..62e4246 100644
--- a/src/PJ_stere.c
+++ b/src/PJ_stere.c
@@ -1,6 +1,6 @@
 #define PJ_LIB__
 #include <errno.h>
-#include <proj.h>
+#include "proj.h"
 #include "projects.h"
 
 PROJ_HEAD(stere, "Stereographic") "\n\tAzi, Sph&Ell\n\tlat_ts=";
diff --git a/src/PJ_sterea.c b/src/PJ_sterea.c
index b1cb736..96b3560 100644
--- a/src/PJ_sterea.c
+++ b/src/PJ_sterea.c
@@ -25,7 +25,7 @@
 */
 #define PJ_LIB__
 #include <errno.h>
-#include <projects.h>
+#include "projects.h"
 
 
 struct pj_opaque {
diff --git a/src/PJ_tcc.c b/src/PJ_tcc.c
index c6600ae..c355a60 100644
--- a/src/PJ_tcc.c
+++ b/src/PJ_tcc.c
@@ -1,5 +1,5 @@
 #define PJ_LIB__
-#include <proj.h>
+#include "proj.h"
 #include "projects.h"
 
 PROJ_HEAD(tcc, "Transverse Central Cylindrical") "\n\tCyl, Sph, no inv.";
diff --git a/src/PJ_times.c b/src/PJ_times.c
index 74b7939..18fe723 100644
--- a/src/PJ_times.c
+++ b/src/PJ_times.c
@@ -30,7 +30,7 @@
  *****************************************************************************/
 
 #define PJ_LIB__
-#include <projects.h>
+#include "projects.h"
 
 PROJ_HEAD(times, "Times") "\n\tCyl, Sph";
 
diff --git a/src/PJ_tmerc.c b/src/PJ_tmerc.c
index 77fb582..bc77e45 100644
--- a/src/PJ_tmerc.c
+++ b/src/PJ_tmerc.c
@@ -1,6 +1,6 @@
 #define PJ_LIB__
 #include <errno.h>
-#include <proj.h>
+#include "proj.h"
 #include "projects.h"
 
 PROJ_HEAD(tmerc, "Transverse Mercator") "\n\tCyl, Sph&Ell";
diff --git a/src/PJ_tpeqd.c b/src/PJ_tpeqd.c
index eee5b3c..21e3c5e 100644
--- a/src/PJ_tpeqd.c
+++ b/src/PJ_tpeqd.c
@@ -1,6 +1,6 @@
 #define PJ_LIB__
 #include <errno.h>
-#include <proj.h>
+#include "proj.h"
 #include "projects.h"
 
 
diff --git a/src/PJ_urm5.c b/src/PJ_urm5.c
index 9960f50..091fe9d 100644
--- a/src/PJ_urm5.c
+++ b/src/PJ_urm5.c
@@ -1,6 +1,6 @@
 #define PJ_LIB__
 #include <errno.h>
-#include <proj.h>
+#include "proj.h"
 #include "projects.h"
 
 PROJ_HEAD(urm5, "Urmaev V") "\n\tPCyl., Sph., no inv.\n\tn= q= alpha=";
diff --git a/src/PJ_urmfps.c b/src/PJ_urmfps.c
index 19719a2..bbceab5 100644
--- a/src/PJ_urmfps.c
+++ b/src/PJ_urmfps.c
@@ -1,6 +1,6 @@
 #define PJ_LIB__
 #include <errno.h>
-#include <proj.h>
+#include "proj.h"
 #include "projects.h"
 
 PROJ_HEAD(urmfps, "Urmaev Flat-Polar Sinusoidal") "\n\tPCyl, Sph.\n\tn=";
diff --git a/src/PJ_vandg.c b/src/PJ_vandg.c
index d4ed7b8..d148e21 100644
--- a/src/PJ_vandg.c
+++ b/src/PJ_vandg.c
@@ -1,5 +1,5 @@
 #define PJ_LIB__
-#include <proj.h>
+#include "proj.h"
 #include "projects.h"
 
 PROJ_HEAD(vandg, "van der Grinten (I)") "\n\tMisc Sph";
diff --git a/src/aasincos.c b/src/aasincos.c
index 7d49ac1..627ec14 100644
--- a/src/aasincos.c
+++ b/src/aasincos.c
@@ -1,5 +1,5 @@
 /* arc sin, cosine, tan2 and sqrt that will NOT fail */
-#include <projects.h>
+#include "projects.h"
 #define ONE_TOL	 1.00000000000001
 #define ATOL 1e-50
 
diff --git a/src/bch2bps.c b/src/bch2bps.c
index c0a357c..3ee5699 100644
--- a/src/bch2bps.c
+++ b/src/bch2bps.c
@@ -1,5 +1,5 @@
 /* convert bivariate w Chebyshev series to w Power series */
-#include <projects.h>
+#include "projects.h"
 /* basic support procedures */
 	static void /* clear vector to zero */
 clear(projUV *p, int n) { static const projUV c = {0., 0.}; while (n--) *p++ = c; }
diff --git a/src/bchgen.c b/src/bchgen.c
index b441450..c129f0c 100644
--- a/src/bchgen.c
+++ b/src/bchgen.c
@@ -1,5 +1,5 @@
 /* generate double bivariate Chebychev polynomial */
-#include <projects.h>
+#include "projects.h"
 	int
 bchgen(projUV a, projUV b, int nu, int nv, projUV **f, projUV(*func)(projUV)) {
 	int i, j, k;
diff --git a/src/biveval.c b/src/biveval.c
index 59021ee..c76a34c 100644
--- a/src/biveval.c
+++ b/src/biveval.c
@@ -1,5 +1,5 @@
 /* procedures for evaluating Tseries */
-# include <projects.h>
+# include "projects.h"
 # define NEAR_ONE	1.00001
 static double ceval(struct PW_COEF *C, int n, projUV w, projUV w2) {
     double d=0, dd=0, vd, vdd, tmp, *c;
diff --git a/src/cct.c b/src/cct.c
index 25e97af..1853a96 100644
--- a/src/cct.c
+++ b/src/cct.c
@@ -77,7 +77,7 @@ Thomas Knudsen, thokn at sdfe.dk, 2016-05-25/2017-10-26
 #include <stdlib.h>
 #include <string.h>
 
-#include <proj.h>
+#include "proj.h"
 #include "proj_internal.h"
 #include "projects.h"
 #include "optargpm.h"
diff --git a/src/dmstor.c b/src/dmstor.c
index b994589..27593cb 100644
--- a/src/dmstor.c
+++ b/src/dmstor.c
@@ -1,5 +1,5 @@
 /* Convert DMS string to radians */
-#include <projects.h>
+#include "projects.h"
 #include <string.h>
 #include <ctype.h>
 
diff --git a/src/emess.c b/src/emess.c
index dc4cb82..a645bac 100644
--- a/src/emess.c
+++ b/src/emess.c
@@ -14,7 +14,7 @@
 #include <stdarg.h>
 #include <errno.h>
 #include <string.h>
-#include <proj_api.h>
+#include "proj_api.h"
 #define EMESS_ROUTINE
 #include "emess.h"
 	void
diff --git a/src/geodesic.c b/src/geodesic.c
index 23557b5..a854c1f 100644
--- a/src/geodesic.c
+++ b/src/geodesic.c
@@ -192,12 +192,12 @@ static real AngNormalize(real x) {
   real y = fmod(x, (real)(360));
 #if defined(_MSC_VER) && _MSC_VER < 1900
   /*
-    Before version 14 (2015), Visual Studio had problems dealing
-    with -0.0.  Specifically
-      VC 10,11,12 and 32-bit compile: fmod(-0.0, 360.0) -> +0.0
-    sincosdx has a similar fix.
-    python 2.7 on Windows 32-bit machines has the same problem.
-  */
+   * Before version 14 (2015), Visual Studio had problems dealing
+   * with -0.0.  Specifically
+   *   VC 10,11,12 and 32-bit compile: fmod(-0.0, 360.0) -> +0.0
+   * sincosdx has a similar fix.
+   * python 2.7 on Windows 32-bit machines has the same problem.
+   */
   if (x == 0) y = x;
 #endif
   return y <= -180 ? y + 360 : (y <= 180 ? y : y - 360);
@@ -238,7 +238,8 @@ static void sincosdx(real x, real* sinx, real* cosx) {
   r = remquo(x, (real)(90), &q);
 #else
   r = fmod(x, (real)(360));
-  q = (int)(floor(r / 90 + (real)(0.5)));
+  /* check for NaN */
+  q = r == r ? (int)(floor(r / 90 + (real)(0.5))) : 0;
   r -= 90 * q;
 #endif
   /* now abs(r) <= 45 */
@@ -247,13 +248,13 @@ static void sincosdx(real x, real* sinx, real* cosx) {
   s = sin(r); c = cos(r);
 #if defined(_MSC_VER) && _MSC_VER < 1900
   /*
-    Before version 14 (2015), Visual Studio had problems dealing
-    with -0.0.  Specifically
-      VC 10,11,12 and 32-bit compile: fmod(-0.0, 360.0) -> +0.0
-      VC 12       and 64-bit compile:  sin(-0.0)        -> +0.0
-    AngNormalize has a similar fix.
-    python 2.7 on Windows 32-bit machines has the same problem.
-  */
+   * Before version 14 (2015), Visual Studio had problems dealing
+   * with -0.0.  Specifically
+   *   VC 10,11,12 and 32-bit compile: fmod(-0.0, 360.0) -> +0.0
+   *   VC 12       and 64-bit compile:  sin(-0.0)        -> +0.0
+   * AngNormalize has a similar fix.
+   * python 2.7 on Windows 32-bit machines has the same problem.
+   */
   if (x == 0) s = x;
 #endif
   switch ((unsigned)q & 3U) {
@@ -657,7 +658,15 @@ real geod_genposition(const struct geod_geodesicline* l,
     S12 = l->c2 * atan2(salp12, calp12) + l->A4 * (B42 - l->B41);
   }
 
-  if (outmask & GEOD_LATITUDE)
+  /* In the pattern
+   *
+   *   if ((outmask & GEOD_XX) && pYY)
+   *     *pYY = YY;
+   *
+   * the second check "&& pYY" is redundant.  It's there to make the CLang
+   * static analyzer happy.
+   */
+  if ((outmask & GEOD_LATITUDE) && plat2)
     *plat2 = lat2;
   if (outmask & GEOD_LONGITUDE)
     *plon2 = lon2;
@@ -1126,7 +1135,7 @@ real SinCosSeries(boolx sinp, real sinx, real cosx, const real c[], int n) {
   real ar, y0, y1;
   c += (n + sinp);              /* Point to one beyond last element */
   ar = 2 * (cosx - sinx) * (cosx + sinx); /* 2 * cos(2 * x) */
-  y0 = n & 1 ? *--c : 0; y1 = 0;          /* accumulators for sum */
+  y0 = (n & 1) ? *--c : 0; y1 = 0;        /* accumulators for sum */
   /* Now n is even */
   n /= 2;
   while (n--) {
@@ -1893,7 +1902,9 @@ void geod_polygon_addedge(const struct geod_geodesic* g,
                           struct geod_polygon* p,
                           real azi, real s) {
   if (p->num) {              /* Do nothing is num is zero */
-    real lat, lon, S12 = 0;  /* Initialize S12 to stop Visual Studio warning */
+    /* Initialize S12 to stop Visual Studio warning.  Initialization of lat and
+     * lon is to make CLang static analyzer happy. */
+    real lat = 0, lon = 0, S12 = 0;
     geod_gendirect(g, p->lat, p->lon, azi, GEOD_LONG_UNROLL, s,
                    &lat, &lon, 0,
                    0, 0, 0, 0, p->polyline ? 0 : &S12);
@@ -2030,7 +2041,9 @@ unsigned geod_polygon_testedge(const struct geod_geodesic* g,
   tempsum = p->A[0];
   crossings = p->crossings;
   {
-    real lat, lon, s12, S12;
+    /* Initialization of lat, lon, and S12 is to make CLang static analyzer
+       happy. */
+    real lat = 0, lon = 0, s12, S12 = 0;
     geod_gendirect(g, p->lat, p->lon, azi, GEOD_LONG_UNROLL, s,
                    &lat, &lon, 0,
                    0, 0, 0, 0, &S12);
diff --git a/src/geodesic.h b/src/geodesic.h
index cd7c2b7..f9d612f 100644
--- a/src/geodesic.h
+++ b/src/geodesic.h
@@ -132,7 +132,7 @@
  * The patch level of the geodesic library.  (This tracks the version of
  * GeographicLib.)
  **********************************************************************/
-#define GEODESIC_VERSION_PATCH 2
+#define GEODESIC_VERSION_PATCH 3
 
 /**
  * Pack the version components into a single integer.  Users should not rely on
diff --git a/src/geodtest.c b/src/geodtest.c
index de72940..b62fbbb 100644
--- a/src/geodtest.c
+++ b/src/geodtest.c
@@ -614,7 +614,8 @@ static int GeodSolve73() {
               &lat2, &lon2, &azi2);
   result += assertEquals(lat2, 81.04623, 0.5e-5);
   result += assertEquals(lon2, -170, 0.5e-5);
-  result += assertEquals(azi2, 0, 0.5e-5);
+  result += azi2 == 0 ? 0 : 1;
+  result += 1/azi2 > 0 ? 0 : 1; /* Check that azi2 = +0.0 not -0.0 */
   return result;
 }
 
diff --git a/src/gie.c b/src/gie.c
index eb5d595..756cf5d 100644
--- a/src/gie.c
+++ b/src/gie.c
@@ -112,7 +112,7 @@ Thomas Knudsen, thokn at sdfe.dk, 2017-10-01/2017-10-08
 #include <stdlib.h>
 #include <string.h>
 
-#include <proj.h>
+#include "proj.h"
 #include "proj_internal.h"
 #include "projects.h"
 
@@ -579,9 +579,9 @@ either a conversion or a transformation)
 
 
 
-static int pj_unitconvert_selftest (void);
-static int pj_cart_selftest (void);
-static int pj_horner_selftest (void);
+static int unitconvert_selftest (void);
+static int cart_selftest (void);
+static int horner_selftest (void);
 
 /*****************************************************************************/
 static int builtins (const char *args) {
@@ -598,26 +598,26 @@ using the "builtins" command verb.
     T.op_ok = 0;
     T.op_ko = 0;
     T.op_skip = 0;
-    i = pj_unitconvert_selftest ();
+    i = unitconvert_selftest ();
     if (i!=0) {
-        fprintf (T.fout, "pj_unitconvert_selftest fails with %d\n", i);
+        fprintf (T.fout, "unitconvert_selftest fails with %d\n", i);
         another_failing_builtin();
     }
     else
         another_succeeding_builtin ();
 
 
-    i = pj_cart_selftest ();
+    i = cart_selftest ();
     if (i!=0) {
-        fprintf (T.fout, "pj_cart_selftest fails with %d\n", i);
+        fprintf (T.fout, "cart_selftest fails with %d\n", i);
         another_failing_builtin();
     }
     else
         another_succeeding_builtin ();
 
-    i = pj_horner_selftest ();
+    i = horner_selftest ();
     if (i!=0) {
-        fprintf (T.fout, "pj_horner_selftest fails with %d\n", i);
+        fprintf (T.fout, "horner_selftest fails with %d\n", i);
         another_failing_builtin();
     }
     else
@@ -994,7 +994,7 @@ static const struct errno_vs_err_const lookup[] = {
     {"pjd_err_proj_not_named"           ,  -4},
     {"pjd_err_unknown_projection_id"    ,  -5},
     {"pjd_err_eccentricity_is_one"      ,  -6},
-    {"pjd_err_unknow_unit_id"           ,  -7},
+    {"pjd_err_unknown_unit_id"          ,  -7},
     {"pjd_err_invalid_boolean_param"    ,  -8},
     {"pjd_err_unknown_ellp_param"       ,  -9},
     {"pjd_err_rev_flattening_is_zero"   ,  -10},
@@ -1473,7 +1473,7 @@ static const char sb_utm32[] = {
     " +inv_c=6.13342118787027e+06,4.94690181709311e+05,9.99824464710368e-01,2.82279070814774e-02,7.66123542220864e-11,1.78425334628927e-09,-1.05584823306400e-14,-3.32554258683744e-15"
 };
 
-static int pj_horner_selftest (void) {
+static int horner_selftest (void) {
     PJ *P;
     PJ_COORD a, b, c;
     double dist;
@@ -1539,7 +1539,7 @@ static int pj_horner_selftest (void) {
 
 
 /* Testing quite a bit of the pj_obs_api as a side effect (inspired by pj_obs_api_test.c) */
-static int pj_cart_selftest (void) {
+static int cart_selftest (void) {
     PJ_CONTEXT *ctx;
     PJ *P;
     PJ_COORD a, b, obs[2];
@@ -1968,7 +1968,7 @@ static int test_time(const char* args, double tol, double t_in, double t_exp) {
     return ret;
 }
 
-static int pj_unitconvert_selftest (void) {
+static int unitconvert_selftest (void) {
     int ret = 0;
     char args1[] = "+proj=unitconvert +t_in=decimalyear +t_out=decimalyear";
     double in1 = 2004.25;
diff --git a/src/mk_cheby.c b/src/mk_cheby.c
index b074650..3dbc309 100644
--- a/src/mk_cheby.c
+++ b/src/mk_cheby.c
@@ -1,4 +1,4 @@
-#include <projects.h>
+#include "projects.h"
 static void /* sum coefficients less than res */
 eval(projUV **w, int nu, int nv, double res, projUV *resid) {
     int i, j;
diff --git a/src/nad_init.c b/src/nad_init.c
index 04177a4..c64c474 100644
--- a/src/nad_init.c
+++ b/src/nad_init.c
@@ -27,7 +27,7 @@
 
 #define PJ_LIB__
 
-#include <projects.h>
+#include "projects.h"
 #include <stdio.h>
 #include <errno.h>
 #include <string.h>
diff --git a/src/nad_intr.c b/src/nad_intr.c
index 37b628b..b385410 100644
--- a/src/nad_intr.c
+++ b/src/nad_intr.c
@@ -1,6 +1,6 @@
 /* Determine nad table correction value */
 #define PJ_LIB__
-#include <projects.h>
+#include "projects.h"
 	LP
 nad_intr(LP t, struct CTABLE *ct) {
 	LP val, frct;
diff --git a/src/pj_apply_vgridshift.c b/src/pj_apply_vgridshift.c
index 6435b95..5a40ddf 100644
--- a/src/pj_apply_vgridshift.c
+++ b/src/pj_apply_vgridshift.c
@@ -33,7 +33,7 @@
 #include "proj_internal.h"
 #include "projects.h"
 
-static double pj_read_vgrid_value( PJ *defn, LP input, int *gridlist_count_p, PJ_GRIDINFO **tables, struct CTABLE *ct) {
+static double read_vgrid_value( PJ *defn, LP input, int *gridlist_count_p, PJ_GRIDINFO **tables, struct CTABLE *ct) {
     int  itable = 0;
     double value = HUGE_VAL;
     double grid_x, grid_y;
@@ -180,7 +180,7 @@ int pj_apply_vgridshift( PJ *defn, const char *listname,
         input.phi = y[io];
         input.lam = x[io];
 
-        value = pj_read_vgrid_value(defn, input, gridlist_count_p, tables, &ct);
+        value = read_vgrid_value(defn, input, gridlist_count_p, tables, &ct);
 
         if( inverse )
             z[io] -= value;
@@ -286,7 +286,7 @@ double proj_vgrid_value(PJ *P, LP lp){
     double value;
     memset(&used_grid, 0, sizeof(struct CTABLE));
 
-    value = pj_read_vgrid_value(P, lp, &(P->vgridlist_geoid_count), P->vgridlist_geoid, &used_grid);
+    value = read_vgrid_value(P, lp, &(P->vgridlist_geoid_count), P->vgridlist_geoid, &used_grid);
     proj_log_trace(P, "proj_vgrid_value: (%f, %f) = %f", lp.lam*RAD_TO_DEG, lp.phi*RAD_TO_DEG, value);
 
     return value;
diff --git a/src/pj_auth.c b/src/pj_auth.c
index 3517841..ed716fd 100644
--- a/src/pj_auth.c
+++ b/src/pj_auth.c
@@ -1,5 +1,5 @@
 /* determine latitude from authalic latitude */
-#include <projects.h>
+#include "projects.h"
 # define P00 .33333333333333333333 /*   1 /     3 */
 # define P01 .17222222222222222222 /*  31 /   180 */
 # define P02 .10257936507936507937 /* 517 /  5040 */
diff --git a/src/pj_ctx.c b/src/pj_ctx.c
index fc52f30..1b2aea2 100644
--- a/src/pj_ctx.c
+++ b/src/pj_ctx.c
@@ -25,7 +25,7 @@
  * DEALINGS IN THE SOFTWARE.
  *****************************************************************************/
 
-#include <projects.h>
+#include "projects.h"
 #include <string.h>
 #include <errno.h>
 
diff --git a/src/pj_datum_set.c b/src/pj_datum_set.c
index c2fb160..f9027bb 100644
--- a/src/pj_datum_set.c
+++ b/src/pj_datum_set.c
@@ -26,7 +26,7 @@
  *****************************************************************************/
 
 #include <errno.h>
-#include <projects.h>
+#include "projects.h"
 #include <string.h>
 
 /* SEC_TO_RAD = Pi/180/3600 */
diff --git a/src/pj_datums.c b/src/pj_datums.c
index f084f9c..4bb23f2 100644
--- a/src/pj_datums.c
+++ b/src/pj_datums.c
@@ -28,7 +28,7 @@
 #include "proj.h"
 
 #define PJ_DATUMS__
-#include <projects.h>
+#include "projects.h"
 
 /*
  * The ellipse code must match one from pj_ellps.c.  The datum id should
diff --git a/src/pj_ell_set.c b/src/pj_ell_set.c
index ab2fa81..d1f8f60 100644
--- a/src/pj_ell_set.c
+++ b/src/pj_ell_set.c
@@ -1,7 +1,7 @@
 /* set ellipsoid parameters a and es */
 #include <string.h>
 #include <errno.h>
-#include <proj.h>
+#include "proj.h"
 #include "proj_internal.h"
 #include "projects.h"
 
diff --git a/src/pj_errno.c b/src/pj_errno.c
index 8b91ab2..6e98cd7 100644
--- a/src/pj_errno.c
+++ b/src/pj_errno.c
@@ -1,6 +1,6 @@
 /* For full ANSI compliance of global variable */
 
-#include <projects.h>
+#include "projects.h"
 
 C_NAMESPACE_VAR int pj_errno = 0;
 
diff --git a/src/pj_factors.c b/src/pj_factors.c
index 17b39c1..e682a12 100644
--- a/src/pj_factors.c
+++ b/src/pj_factors.c
@@ -1,6 +1,6 @@
 /* projection scale factors */
 #define PJ_LIB__
-#include <proj.h>
+#include "proj.h"
 #include "projects.h"
 
 #include <errno.h>
diff --git a/src/pj_fileapi.c b/src/pj_fileapi.c
index e223993..d7d3f00 100644
--- a/src/pj_fileapi.c
+++ b/src/pj_fileapi.c
@@ -27,23 +27,23 @@
  *****************************************************************************/
 
 #include <errno.h>
-#include <projects.h>
+#include "projects.h"
 #include <string.h>
 
-static PAFile pj_stdio_fopen(projCtx ctx, const char *filename, 
+static PAFile stdio_fopen(projCtx ctx, const char *filename, 
                              const char *access);
-static size_t pj_stdio_fread(void *buffer, size_t size, size_t nmemb, 
+static size_t stdio_fread(void *buffer, size_t size, size_t nmemb, 
                              PAFile file);
-static int pj_stdio_fseek(PAFile file, long offset, int whence);
-static long pj_stdio_ftell(PAFile file);
-static void pj_stdio_fclose(PAFile file);
+static int stdio_fseek(PAFile file, long offset, int whence);
+static long stdio_ftell(PAFile file);
+static void stdio_fclose(PAFile file);
 
 static projFileAPI default_fileapi = { 
-    pj_stdio_fopen, 
-    pj_stdio_fread,
-    pj_stdio_fseek,
-    pj_stdio_ftell,
-    pj_stdio_fclose
+    stdio_fopen, 
+    stdio_fread,
+    stdio_fseek,
+    stdio_ftell,
+    stdio_fclose
 };
 
 typedef struct {
@@ -61,10 +61,10 @@ projFileAPI *pj_get_default_fileapi(void)
 }
 
 /************************************************************************/
-/*                           pj_stdio_fopen()                           */
+/*                           stdio_fopen()                           */
 /************************************************************************/
 
-static PAFile pj_stdio_fopen(projCtx ctx, const char *filename, 
+static PAFile stdio_fopen(projCtx ctx, const char *filename, 
                              const char *access)
 {
     stdio_pafile *pafile;
@@ -90,10 +90,10 @@ static PAFile pj_stdio_fopen(projCtx ctx, const char *filename,
 }
 
 /************************************************************************/
-/*                           pj_stdio_fread()                           */
+/*                           stdio_fread()                           */
 /************************************************************************/
 
-static size_t pj_stdio_fread(void *buffer, size_t size, size_t nmemb, 
+static size_t stdio_fread(void *buffer, size_t size, size_t nmemb, 
                              PAFile file)
 {
     stdio_pafile *pafile = (stdio_pafile *) file;
@@ -101,27 +101,27 @@ static size_t pj_stdio_fread(void *buffer, size_t size, size_t nmemb,
 }
 
 /************************************************************************/
-/*                           pj_stdio_fseek()                           */
+/*                           stdio_fseek()                           */
 /************************************************************************/
-static int pj_stdio_fseek(PAFile file, long offset, int whence)
+static int stdio_fseek(PAFile file, long offset, int whence)
 {
     stdio_pafile *pafile = (stdio_pafile *) file;
     return fseek(pafile->fp, offset, whence);
 }
 
 /************************************************************************/
-/*                           pj_stdio_ftell()                           */
+/*                           stdio_ftell()                           */
 /************************************************************************/
-static long pj_stdio_ftell(PAFile file)
+static long stdio_ftell(PAFile file)
 {
     stdio_pafile *pafile = (stdio_pafile *) file;
     return ftell(pafile->fp);
 }
 
 /************************************************************************/
-/*                          pj_stdio_fclose()                           */
+/*                          stdio_fclose()                           */
 /************************************************************************/
-static void pj_stdio_fclose(PAFile file)
+static void stdio_fclose(PAFile file)
 {
     stdio_pafile *pafile = (stdio_pafile *) file;
     fclose(pafile->fp);
diff --git a/src/pj_fwd.c b/src/pj_fwd.c
index d238fa4..2a064e5 100644
--- a/src/pj_fwd.c
+++ b/src/pj_fwd.c
@@ -36,7 +36,7 @@
 #define OUTPUT_UNITS P->right
 
 
-static PJ_COORD pj_fwd_prepare (PJ *P, PJ_COORD coo) {
+static PJ_COORD fwd_prepare (PJ *P, PJ_COORD coo) {
     if (HUGE_VAL==coo.v[0])
         return proj_coord_error ();
 
@@ -71,9 +71,10 @@ static PJ_COORD pj_fwd_prepare (PJ *P, PJ_COORD coo) {
 
         if (P->hgridshift)
             coo = proj_trans (P->hgridshift, PJ_INV, coo);
-        else if (P->helmert) {
+        else if (P->helmert || (P->cart_wgs84 != 0 && P->cart != 0)) {
             coo = proj_trans (P->cart_wgs84, PJ_FWD, coo); /* Go cartesian in WGS84 frame */
-            coo = proj_trans (P->helmert,    PJ_INV, coo); /* Step into local frame */
+            if( P->helmert )
+                coo = proj_trans (P->helmert,    PJ_INV, coo); /* Step into local frame */
             coo = proj_trans (P->cart,       PJ_INV, coo); /* Go back to angular using local ellps */
         }
         if (coo.lp.lam==HUGE_VAL)
@@ -100,7 +101,7 @@ static PJ_COORD pj_fwd_prepare (PJ *P, PJ_COORD coo) {
 
 
 
-static PJ_COORD pj_fwd_finalize (PJ *P, PJ_COORD coo) {
+static PJ_COORD fwd_finalize (PJ *P, PJ_COORD coo) {
 
     switch (OUTPUT_UNITS) {
 
@@ -146,9 +147,10 @@ static PJ_COORD pj_fwd_finalize (PJ *P, PJ_COORD coo) {
             return coo;
         if (P->hgridshift)
             coo = proj_trans (P->hgridshift, PJ_INV, coo);
-        else if (P->helmert) {
+        else if (P->helmert || (P->cart_wgs84 != 0 && P->cart != 0)) {
             coo = proj_trans (P->cart_wgs84, PJ_FWD, coo); /* Go cartesian in WGS84 frame */
-            coo = proj_trans (P->helmert,    PJ_INV, coo); /* Step into local frame */
+            if( P->helmert )
+                coo = proj_trans (P->helmert,    PJ_INV, coo); /* Step into local frame */
             coo = proj_trans (P->cart,       PJ_INV, coo); /* Go back to angular using local ellps */
         }
         if (coo.lp.lam==HUGE_VAL)
@@ -174,13 +176,24 @@ static PJ_COORD pj_fwd_finalize (PJ *P, PJ_COORD coo) {
 }
 
 
+static PJ_COORD error_or_coord(PJ *P, PJ_COORD coord, int last_errno) {
+    if (proj_errno(P))
+        return proj_coord_error();
+
+    proj_errno_restore(P, last_errno);
+    return coord;
+}
+
 
 XY pj_fwd(LP lp, PJ *P) {
+    int last_errno;
     PJ_COORD coo = {{0,0,0,0}};
     coo.lp = lp;
 
+    last_errno = proj_errno_reset(P);
+
     if (!P->skip_fwd_prepare)
-        coo = pj_fwd_prepare (P, coo);
+        coo = fwd_prepare (P, coo);
     if (HUGE_VAL==coo.v[0])
         return proj_coord_error ().xy;
 
@@ -199,18 +212,22 @@ XY pj_fwd(LP lp, PJ *P) {
         return proj_coord_error ().xy;
 
     if (!P->skip_fwd_finalize)
-        coo = pj_fwd_finalize (P, coo);
-    return coo.xy;
+        coo = fwd_finalize (P, coo);
+
+    return error_or_coord(P, coo, last_errno).xy;
 }
 
 
 
 XYZ pj_fwd3d(LPZ lpz, PJ *P) {
+    int last_errno;
     PJ_COORD coo = {{0,0,0,0}};
     coo.lpz = lpz;
 
+    last_errno = proj_errno_reset(P);
+
     if (!P->skip_fwd_prepare)
-        coo = pj_fwd_prepare (P, coo);
+        coo = fwd_prepare (P, coo);
     if (HUGE_VAL==coo.v[0])
         return proj_coord_error ().xyz;
 
@@ -229,15 +246,18 @@ XYZ pj_fwd3d(LPZ lpz, PJ *P) {
         return proj_coord_error ().xyz;
 
     if (!P->skip_fwd_finalize)
-        coo = pj_fwd_finalize (P, coo);
-    return coo.xyz;
+        coo = fwd_finalize (P, coo);
+
+    return error_or_coord(P, coo, last_errno).xyz;
 }
 
 
 
 PJ_COORD pj_fwd4d (PJ_COORD coo, PJ *P) {
+    int last_errno = proj_errno_reset(P);
+
     if (!P->skip_fwd_prepare)
-        coo = pj_fwd_prepare (P, coo);
+        coo = fwd_prepare (P, coo);
     if (HUGE_VAL==coo.v[0])
         return proj_coord_error ();
 
@@ -256,6 +276,7 @@ PJ_COORD pj_fwd4d (PJ_COORD coo, PJ *P) {
         return proj_coord_error ();
 
     if (!P->skip_fwd_finalize)
-        coo = pj_fwd_finalize (P, coo);
-    return coo;
+        coo = fwd_finalize (P, coo);
+
+    return error_or_coord(P, coo, last_errno);
 }
diff --git a/src/pj_gauss.c b/src/pj_gauss.c
index bd49b6c..4f27ac1 100644
--- a/src/pj_gauss.c
+++ b/src/pj_gauss.c
@@ -24,7 +24,7 @@
 ** SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 */
 #define PJ_LIB__
-#include <projects.h>
+#include "projects.h"
 
 #define MAX_ITER 20
 
@@ -36,8 +36,8 @@ struct GAUSS {
 };
 #define DEL_TOL 1e-14
 
-static double srat(double esinp, double exp) {
-    return(pow((1.-esinp)/(1.+esinp), exp));
+static double srat(double esinp, double ratexp) {
+    return(pow((1.-esinp)/(1.+esinp), ratexp));
 }
 
 void *pj_gauss_ini(double e, double phi0, double *chi, double *rc) {
diff --git a/src/pj_gc_reader.c b/src/pj_gc_reader.c
index 90610a1..c38cbf1 100644
--- a/src/pj_gc_reader.c
+++ b/src/pj_gc_reader.c
@@ -28,11 +28,11 @@
 #define PJ_LIB__
 
 #include <errno.h>
-#include <projects.h>
+#include "projects.h"
 #include <string.h>
 #include <ctype.h>
 
-static int pj_gc_readentry(projCtx ctx, PAFile fid, PJ_GridCatalogEntry *entry);
+static int gc_readentry(projCtx ctx, PAFile fid, PJ_GridCatalogEntry *entry);
 
 /************************************************************************/
 /*                         pj_gc_readcatalog()                          */
@@ -81,7 +81,7 @@ PJ_GridCatalog *pj_gc_readcatalog( projCtx ctx, const char *catalog_name )
         return NULL;
     }
     
-    while( pj_gc_readentry( ctx, fid, 
+    while( gc_readentry( ctx, fid, 
                             catalog->entries+catalog->entry_count) == 0)
     {
         catalog->entry_count++;
@@ -114,13 +114,13 @@ PJ_GridCatalog *pj_gc_readcatalog( projCtx ctx, const char *catalog_name )
 }
 
 /************************************************************************/
-/*                        pj_gc_read_csv_line()                         */
+/*                        gc_read_csv_line()                         */
 /*                                                                      */
 /*      Simple csv line splitter with fixed maximum line size and       */
 /*      token count.                                                    */
 /************************************************************************/
 
-static int pj_gc_read_csv_line( projCtx ctx, PAFile fid, 
+static int gc_read_csv_line( projCtx ctx, PAFile fid, 
                                 char **tokens, int max_tokens ) 
 {
     char line[302];
@@ -197,7 +197,7 @@ double pj_gc_parsedate( projCtx ctx, const char *date_string )
 
 
 /************************************************************************/
-/*                          pj_gc_readentry()                           */
+/*                          gc_readentry()                           */
 /*                                                                      */
 /*      Read one catalog entry from the file                            */
 /*                                                                      */
@@ -205,7 +205,7 @@ double pj_gc_parsedate( projCtx ctx, const char *date_string )
 /*        gridname,ll_long,ll_lat,ur_long,ur_lat,priority,date          */
 /************************************************************************/
 
-static int pj_gc_readentry(projCtx ctx, PAFile fid, PJ_GridCatalogEntry *entry) 
+static int gc_readentry(projCtx ctx, PAFile fid, PJ_GridCatalogEntry *entry) 
 {
 #define MAX_TOKENS 30
     char *tokens[MAX_TOKENS];
@@ -214,7 +214,7 @@ static int pj_gc_readentry(projCtx ctx, PAFile fid, PJ_GridCatalogEntry *entry)
 
     memset( entry, 0, sizeof(PJ_GridCatalogEntry) );
     
-    token_count = pj_gc_read_csv_line( ctx, fid, tokens, MAX_TOKENS );
+    token_count = gc_read_csv_line( ctx, fid, tokens, MAX_TOKENS );
     if( token_count < 5 )
     {
         error = 1; /* TODO: need real error codes */
diff --git a/src/pj_geocent.c b/src/pj_geocent.c
index 3d771c4..0e9d725 100644
--- a/src/pj_geocent.c
+++ b/src/pj_geocent.c
@@ -28,7 +28,7 @@
  *****************************************************************************/
 
 #define PJ_LIB__
-#include <projects.h>
+#include "projects.h"
 
 PROJ_HEAD(geocent, "Geocentric")  "\n\t";
 
diff --git a/src/pj_gridcatalog.c b/src/pj_gridcatalog.c
index 053de5e..c019414 100644
--- a/src/pj_gridcatalog.c
+++ b/src/pj_gridcatalog.c
@@ -27,7 +27,7 @@
 
 #define PJ_LIB__
 
-#include <projects.h>
+#include "projects.h"
 #include <string.h>
 #include <assert.h>
 
diff --git a/src/pj_gridinfo.c b/src/pj_gridinfo.c
index b855980..978e19d 100644
--- a/src/pj_gridinfo.c
+++ b/src/pj_gridinfo.c
@@ -389,12 +389,12 @@ int pj_gridinfo_load( projCtx ctx, PJ_GRIDINFO *gi )
 }
 
 /************************************************************************/
-/*                        pj_gridinfo_parent()                          */
+/*                        gridinfo_parent()                          */
 /*                                                                      */
 /*      Seek a parent grid file by name from a grid list                */
 /************************************************************************/
 
-static PJ_GRIDINFO* pj_gridinfo_parent( PJ_GRIDINFO *gilist,
+static PJ_GRIDINFO* gridinfo_parent( PJ_GRIDINFO *gilist,
         const char *name, int length )
 {
     while( gilist )
@@ -402,7 +402,7 @@ static PJ_GRIDINFO* pj_gridinfo_parent( PJ_GRIDINFO *gilist,
         if( strncmp(gilist->ct->id,name,length) == 0 ) return gilist;
         if( gilist->child )
         {
-            PJ_GRIDINFO *parent=pj_gridinfo_parent( gilist->child, name, length );
+            PJ_GRIDINFO *parent=gridinfo_parent( gilist->child, name, length );
             if( parent ) return parent;
         }
         gilist=gilist->next;
@@ -596,7 +596,7 @@ static int pj_gridinfo_init_ntv2( projCtx ctx, PAFile fid, PJ_GRIDINFO *gilist )
         else
         {
             PJ_GRIDINFO *lnk;
-            PJ_GRIDINFO *gp = pj_gridinfo_parent(gilist,
+            PJ_GRIDINFO *gp = gridinfo_parent(gilist,
                                                  (const char*)header+24,8);
 
             if( gp == NULL )
@@ -832,6 +832,7 @@ PJ_GRIDINFO *pj_gridinfo_init( projCtx ctx, const char *gridname )
     PJ_GRIDINFO *gilist;
     PAFile 	fp;
     char	header[160];
+    size_t      header_size = 0;
 
     errno = pj_errno = 0;
     ctx->last_errno = 0;
@@ -878,10 +879,14 @@ PJ_GRIDINFO *pj_gridinfo_init( projCtx ctx, const char *gridname )
 /* -------------------------------------------------------------------- */
 /*      Load a header, to determine the file type.                      */
 /* -------------------------------------------------------------------- */
-    if( pj_ctx_fread( ctx, header, sizeof(header), 1, fp ) != 1 )
+    if( (header_size = pj_ctx_fread( ctx, header, 1,
+                                     sizeof(header), fp ) ) != sizeof(header) )
     {
         /* some files may be smaller that sizeof(header), eg 160, so */
         ctx->last_errno = 0; /* don't treat as a persistent error */
+        pj_log( ctx, PJ_LOG_DEBUG_MAJOR,
+                "pj_gridinfo_init: short header read of %d bytes",
+                (int)header_size );
     }
 
     pj_ctx_fseek( ctx, fp, SEEK_SET, 0 );
@@ -889,14 +894,16 @@ PJ_GRIDINFO *pj_gridinfo_init( projCtx ctx, const char *gridname )
 /* -------------------------------------------------------------------- */
 /*      Determine file type.                                            */
 /* -------------------------------------------------------------------- */
-    if( strncmp(header + 0, "HEADER", 6) == 0
+    if( header_size >= 144 + 16
+        && strncmp(header + 0, "HEADER", 6) == 0
         && strncmp(header + 96, "W GRID", 6) == 0
         && strncmp(header + 144, "TO      NAD83   ", 16) == 0 )
     {
         pj_gridinfo_init_ntv1( ctx, fp, gilist );
     }
 
-    else if( strncmp(header + 0, "NUM_OREC", 8) == 0
+    else if( header_size >= 48 + 7
+             && strncmp(header + 0, "NUM_OREC", 8) == 0
              && strncmp(header + 48, "GS_TYPE", 7) == 0 )
     {
         pj_gridinfo_init_ntv2( ctx, fp, gilist );
@@ -909,20 +916,28 @@ PJ_GRIDINFO *pj_gridinfo_init( projCtx ctx, const char *gridname )
         pj_gridinfo_init_gtx( ctx, fp, gilist );
     }
 
-    else if( strncmp(header + 0,"CTABLE V2",9) == 0 )
+    else if( header_size >= 9 && strncmp(header + 0,"CTABLE V2",9) == 0 )
     {
         struct CTABLE *ct = nad_ctable2_init( ctx, fp );
 
         gilist->format = "ctable2";
         gilist->ct = ct;
 
-        pj_log( ctx, PJ_LOG_DEBUG_MAJOR,
-                "Ctable2 %s %dx%d: LL=(%.9g,%.9g) UR=(%.9g,%.9g)\n",
-                ct->id,
-                ct->lim.lam, ct->lim.phi,
-                ct->ll.lam * RAD_TO_DEG, ct->ll.phi * RAD_TO_DEG,
-                (ct->ll.lam + (ct->lim.lam-1)*ct->del.lam) * RAD_TO_DEG,
-                (ct->ll.phi + (ct->lim.phi-1)*ct->del.phi) * RAD_TO_DEG );
+        if (ct == NULL)
+        {
+            pj_log( ctx, PJ_LOG_DEBUG_MAJOR,
+                    "CTABLE V2 ct is NULL.");
+        }
+        else
+        {
+            pj_log( ctx, PJ_LOG_DEBUG_MAJOR,
+                    "Ctable2 %s %dx%d: LL=(%.9g,%.9g) UR=(%.9g,%.9g)",
+                    ct->id,
+                    ct->lim.lam, ct->lim.phi,
+                    ct->ll.lam * RAD_TO_DEG, ct->ll.phi * RAD_TO_DEG,
+                    (ct->ll.lam + (ct->lim.lam-1)*ct->del.lam) * RAD_TO_DEG,
+                    (ct->ll.phi + (ct->lim.phi-1)*ct->del.phi) * RAD_TO_DEG );
+        }
     }
 
     else
diff --git a/src/pj_gridlist.c b/src/pj_gridlist.c
index fbefdce..9daabbe 100644
--- a/src/pj_gridlist.c
+++ b/src/pj_gridlist.c
@@ -29,7 +29,7 @@
 #define PJ_LIB__
 
 #include <errno.h>
-#include <projects.h>
+#include "projects.h"
 #include <string.h>
 #include <math.h>
 
diff --git a/src/pj_init.c b/src/pj_init.c
index 7848648..48921aa 100644
--- a/src/pj_init.c
+++ b/src/pj_init.c
@@ -30,12 +30,12 @@
 
 
 #define PJ_LIB__
-#include <geodesic.h>
+#include "geodesic.h"
 #include <stdio.h>
 #include <string.h>
 #include <errno.h>
 #include <ctype.h>
-#include <proj.h>
+#include "proj.h"
 #include "proj_internal.h"
 #include "projects.h"
 
@@ -470,7 +470,7 @@ pj_init(int argc, char **argv) {
 }
 
 
-static PJ_CONSTRUCTOR pj_locate_constructor (const char *name) {
+static PJ_CONSTRUCTOR locate_constructor (const char *name) {
     int i;
     char *s;
     for (i = 0; (s = pj_list[i].id) && strcmp(name, s) ; ++i) ;
@@ -557,7 +557,7 @@ pj_init_ctx(projCtx ctx, int argc, char **argv) {
         return pj_dealloc_params (ctx, start, PJD_ERR_PROJ_NOT_NAMED);
     name += 5;
 
-    proj = pj_locate_constructor (name);
+    proj = locate_constructor (name);
     if (0==proj)
         return pj_dealloc_params (ctx, start, PJD_ERR_UNKNOWN_PROJECTION_ID);
 
@@ -587,9 +587,12 @@ pj_init_ctx(projCtx ctx, int argc, char **argv) {
     PIN->vgridlist_geoid = NULL;
     PIN->vgridlist_geoid_count = 0;
 
-    /* Set datum parameters */
-    if (pj_datum_set(ctx, start, PIN))
-        return pj_default_destructor (PIN, proj_errno(PIN));
+    /* Set datum parameters. Similarly to +init parameters we want to expand    */
+    /* +datum parameters as late as possible when dealing with pipelines.       */
+    /* otherwise only the first occurrence of +datum will be expanded and that */
+    if (n_pipelines == 0)
+        if (pj_datum_set(ctx, start, PIN))
+            return pj_default_destructor (PIN, proj_errno(PIN));
 
     err = pj_ellipsoid (PIN);
 
diff --git a/src/pj_initcache.c b/src/pj_initcache.c
index 30ac2aa..a059313 100644
--- a/src/pj_initcache.c
+++ b/src/pj_initcache.c
@@ -25,7 +25,7 @@
  * DEALINGS IN THE SOFTWARE.
  *****************************************************************************/
 
-#include <projects.h>
+#include "projects.h"
 #include <string.h>
 
 static int cache_count = 0;
diff --git a/src/pj_internal.c b/src/pj_internal.c
index 4dbcfbd..dc5d66e 100644
--- a/src/pj_internal.c
+++ b/src/pj_internal.c
@@ -33,7 +33,7 @@
 #include <stdarg.h>
 #include <errno.h>
 
-#include <geodesic.h>
+#include "geodesic.h"
 #include "proj_internal.h"
 #include "projects.h"
 
@@ -430,7 +430,7 @@ void proj_log_trace (PJ *P, const char *fmt, ...) {
 
 
 /*****************************************************************************/
-void proj_log_func (PJ_CONTEXT *ctx, void *app_data, PJ_LOG_FUNCTION log) {
+void proj_log_func (PJ_CONTEXT *ctx, void *app_data, PJ_LOG_FUNCTION logf) {
 /******************************************************************************
     Put a new logging function into P's context. The opaque object app_data is
     passed as first arg at each call to the logger
@@ -440,6 +440,6 @@ void proj_log_func (PJ_CONTEXT *ctx, void *app_data, PJ_LOG_FUNCTION log) {
     if (0==ctx)
         return;
     ctx->app_data = app_data;
-    if (0!=log)
-        ctx->logger = log;
+    if (0!=logf)
+        ctx->logger = logf;
 }
diff --git a/src/pj_inv.c b/src/pj_inv.c
index 4ea88b6..24a87e9 100644
--- a/src/pj_inv.c
+++ b/src/pj_inv.c
@@ -35,7 +35,7 @@
 #define INPUT_UNITS  P->right
 #define OUTPUT_UNITS P->left
 
-static PJ_COORD pj_inv_prepare (PJ *P, PJ_COORD coo) {
+static PJ_COORD inv_prepare (PJ *P, PJ_COORD coo) {
     if (coo.xyz.x == HUGE_VAL) {
         proj_errno_set (P, PJD_ERR_INVALID_X_OR_Y);
         return proj_coord_error ();
@@ -78,9 +78,10 @@ static PJ_COORD pj_inv_prepare (PJ *P, PJ_COORD coo) {
 
         if (P->hgridshift)
             coo = proj_trans (P->hgridshift, PJ_FWD, coo);
-        else if (P->helmert) {
+        else if (P->helmert || (P->cart_wgs84 != 0 && P->cart != 0)) {
             coo = proj_trans (P->cart,       PJ_FWD, coo); /* Go cartesian in local frame */
-            coo = proj_trans (P->helmert,    PJ_FWD, coo); /* Step into WGS84 */
+            if( P->helmert )
+                coo = proj_trans (P->helmert,    PJ_FWD, coo); /* Step into WGS84 */
             coo = proj_trans (P->cart_wgs84, PJ_INV, coo); /* Go back to angular using WGS84 ellps */
         }
         if (coo.lp.lam==HUGE_VAL)
@@ -132,7 +133,7 @@ static PJ_COORD pj_inv_prepare (PJ *P, PJ_COORD coo) {
 
 
 
-static PJ_COORD pj_inv_finalize (PJ *P, PJ_COORD coo) {
+static PJ_COORD inv_finalize (PJ *P, PJ_COORD coo) {
     if (coo.xyz.x == HUGE_VAL) {
         proj_errno_set (P, PJD_ERR_INVALID_X_OR_Y);
         return proj_coord_error ();
@@ -154,9 +155,10 @@ static PJ_COORD pj_inv_finalize (PJ *P, PJ_COORD coo) {
                 return coo;
             if (P->hgridshift)
                 coo = proj_trans (P->hgridshift, PJ_FWD, coo);
-            else if (P->helmert) {
+            else if (P->helmert || (P->cart_wgs84 != 0 && P->cart != 0)) {
                 coo = proj_trans (P->cart,       PJ_FWD, coo); /* Go cartesian in local frame */
-                coo = proj_trans (P->helmert,    PJ_FWD, coo); /* Step into WGS84 */
+                if( P->helmert )
+                    coo = proj_trans (P->helmert,    PJ_FWD, coo); /* Step into WGS84 */
                 coo = proj_trans (P->cart_wgs84, PJ_INV, coo); /* Go back to angular using WGS84 ellps */
             }
             if (coo.lp.lam==HUGE_VAL)
@@ -172,13 +174,24 @@ static PJ_COORD pj_inv_finalize (PJ *P, PJ_COORD coo) {
 }
 
 
+static PJ_COORD error_or_coord(PJ *P, PJ_COORD coord, int last_errno) {
+    if (proj_errno(P))
+        return proj_coord_error();
+
+    proj_errno_restore(P, last_errno);
+    return coord;
+}
+
 
 LP pj_inv(XY xy, PJ *P) {
+    int last_errno;
     PJ_COORD coo = {{0,0,0,0}};
     coo.xy = xy;
 
+    last_errno = proj_errno_reset(P);
+
     if (!P->skip_inv_prepare)
-        coo = pj_inv_prepare (P, coo);
+        coo = inv_prepare (P, coo);
     if (HUGE_VAL==coo.v[0])
         return proj_coord_error ().lp;
 
@@ -197,18 +210,22 @@ LP pj_inv(XY xy, PJ *P) {
         return proj_coord_error ().lp;
 
     if (!P->skip_inv_finalize)
-        coo = pj_inv_finalize (P, coo);
-    return coo.lp;
+        coo = inv_finalize (P, coo);
+
+    return error_or_coord(P, coo, last_errno).lp;
 }
 
 
 
 LPZ pj_inv3d (XYZ xyz, PJ *P) {
+    int last_errno;
     PJ_COORD coo = {{0,0,0,0}};
     coo.xyz = xyz;
 
+    last_errno = proj_errno_reset(P);
+
     if (!P->skip_inv_prepare)
-        coo = pj_inv_prepare (P, coo);
+        coo = inv_prepare (P, coo);
     if (HUGE_VAL==coo.v[0])
         return proj_coord_error ().lpz;
 
@@ -227,15 +244,18 @@ LPZ pj_inv3d (XYZ xyz, PJ *P) {
         return proj_coord_error ().lpz;
 
     if (!P->skip_inv_finalize)
-        coo = pj_inv_finalize (P, coo);
-    return coo.lpz;
+        coo = inv_finalize (P, coo);
+
+    return error_or_coord(P, coo, last_errno).lpz;
 }
 
 
 
 PJ_COORD pj_inv4d (PJ_COORD coo, PJ *P) {
+    int last_errno = proj_errno_reset(P);
+
     if (!P->skip_inv_prepare)
-        coo = pj_inv_prepare (P, coo);
+        coo = inv_prepare (P, coo);
     if (HUGE_VAL==coo.v[0])
         return proj_coord_error ();
 
@@ -254,6 +274,7 @@ PJ_COORD pj_inv4d (PJ_COORD coo, PJ *P) {
         return proj_coord_error ();
 
     if (!P->skip_inv_finalize)
-        coo = pj_inv_finalize (P, coo);
-    return coo;
+        coo = inv_finalize (P, coo);
+
+    return error_or_coord(P, coo, last_errno);
 }
diff --git a/src/pj_log.c b/src/pj_log.c
index bab5f07..1915180 100644
--- a/src/pj_log.c
+++ b/src/pj_log.c
@@ -26,7 +26,7 @@
  *****************************************************************************/
 
 #include "proj.h"
-#include <projects.h>
+#include "projects.h"
 #include <string.h>
 #include <stdarg.h>
 
diff --git a/src/pj_malloc.c b/src/pj_malloc.c
index 127e76e..2d670ae 100644
--- a/src/pj_malloc.c
+++ b/src/pj_malloc.c
@@ -40,7 +40,7 @@
 ** projection system memory allocation/deallocation call with custom
 ** application procedures.  */
 
-#include <proj.h>
+#include "proj.h"
 #include "projects.h"
 #include <errno.h>
 
diff --git a/src/pj_mlfn.c b/src/pj_mlfn.c
index 84282d2..dc8aa2f 100644
--- a/src/pj_mlfn.c
+++ b/src/pj_mlfn.c
@@ -1,4 +1,4 @@
-#include <projects.h>
+#include "projects.h"
 /* meridional distance for ellipsoid and inverse
 **	8th degree - accurate to < 1e-5 meters when used in conjunction
 **		with typical major axis values.
diff --git a/src/pj_msfn.c b/src/pj_msfn.c
index 5b49f41..999e73a 100644
--- a/src/pj_msfn.c
+++ b/src/pj_msfn.c
@@ -1,6 +1,6 @@
 /* determine constant small m */
 #include <math.h>
-#include <projects.h>
+#include "projects.h"
 	double
 pj_msfn(double sinphi, double cosphi, double es) {
 	return (cosphi / sqrt (1. - es * sinphi * sinphi));
diff --git a/src/pj_mutex.c b/src/pj_mutex.c
index 2bcf31a..e734981 100644
--- a/src/pj_mutex.c
+++ b/src/pj_mutex.c
@@ -36,9 +36,9 @@
 
 #ifndef _WIN32
 #include "proj_config.h"
-#include <projects.h>
+#include "projects.h"
 #else
-#include <proj_api.h>
+#include "proj_api.h"
 #endif
 
 /* on win32 we always use win32 mutexes, even if pthreads are available */
@@ -100,9 +100,9 @@ void pj_cleanup_lock()
 
 #include "pthread.h"
 
-static pthread_mutex_t pj_precreated_lock = PTHREAD_MUTEX_INITIALIZER;
-static pthread_mutex_t pj_core_lock;
-static int pj_core_lock_created = 0;
+static pthread_mutex_t precreated_lock = PTHREAD_MUTEX_INITIALIZER;
+static pthread_mutex_t core_lock;
+static int core_lock_created = 0;
 
 /************************************************************************/
 /*                          pj_acquire_lock()                           */
@@ -112,16 +112,16 @@ static int pj_core_lock_created = 0;
 
 void pj_acquire_lock()
 {
-    if (!pj_core_lock_created) {
+    if (!core_lock_created) {
         /*
         ** We need to ensure the core mutex is created in recursive mode
         ** and there is no portable way of doing that using automatic
-        ** initialization so we have pj_precreated_lock only for the purpose
+        ** initialization so we have precreated_lock only for the purpose
         ** of protecting the creation of the core lock.
         */
         pthread_mutexattr_t mutex_attr;
 
-        pthread_mutex_lock( &pj_precreated_lock);
+        pthread_mutex_lock( &precreated_lock);
 
         pthread_mutexattr_init(&mutex_attr);
 #ifdef HAVE_PTHREAD_MUTEX_RECURSIVE
@@ -129,13 +129,13 @@ void pj_acquire_lock()
 #else
         pthread_mutexattr_settype(&mutex_attr, PTHREAD_MUTEX_RECURSIVE_NP);
 #endif
-        pthread_mutex_init(&pj_core_lock, &mutex_attr);
-        pj_core_lock_created = 1;
+        pthread_mutex_init(&core_lock, &mutex_attr);
+        core_lock_created = 1;
 
-        pthread_mutex_unlock( &pj_precreated_lock );
+        pthread_mutex_unlock( &precreated_lock );
     }
 
-    pthread_mutex_lock( &pj_core_lock);
+    pthread_mutex_lock( &core_lock);
 }
 
 /************************************************************************/
@@ -146,7 +146,7 @@ void pj_acquire_lock()
 
 void pj_release_lock()
 {
-    pthread_mutex_unlock( &pj_core_lock );
+    pthread_mutex_unlock( &core_lock );
 }
 
 /************************************************************************/
diff --git a/src/pj_open_lib.c b/src/pj_open_lib.c
index 054853c..de271cd 100644
--- a/src/pj_open_lib.c
+++ b/src/pj_open_lib.c
@@ -30,7 +30,7 @@
 
 #define PJ_LIB__
 #include "proj_internal.h"
-#include <projects.h>
+#include "projects.h"
 #include <stdio.h>
 #include <string.h>
 #include <errno.h>
diff --git a/src/pj_phi2.c b/src/pj_phi2.c
index fa6d995..00b73f7 100644
--- a/src/pj_phi2.c
+++ b/src/pj_phi2.c
@@ -1,5 +1,5 @@
 /* determine latitude angle phi-2 */
-#include <projects.h>
+#include "projects.h"
 
 #define TOL 1.0e-10
 #define N_ITER 15
diff --git a/src/pj_pr_list.c b/src/pj_pr_list.c
index 00cd4bc..baf8125 100644
--- a/src/pj_pr_list.c
+++ b/src/pj_pr_list.c
@@ -1,5 +1,5 @@
 /* print projection's list of parameters */
-#include <projects.h>
+#include "projects.h"
 #include <stdio.h>
 #include <string.h>
 #define LINE_LEN 72
diff --git a/src/pj_qsfn.c b/src/pj_qsfn.c
index c361014..c18a7b9 100644
--- a/src/pj_qsfn.c
+++ b/src/pj_qsfn.c
@@ -1,6 +1,6 @@
 /* determine small q */
 #include <math.h>
-#include <projects.h>
+#include "projects.h"
 
 # define EPSILON 1.0e-7
 
diff --git a/src/pj_release.c b/src/pj_release.c
index 27b1a02..226b3cc 100644
--- a/src/pj_release.c
+++ b/src/pj_release.c
@@ -1,11 +1,18 @@
 /* <<< Release Notice for library >>> */
 
-#include <projects.h>
+#include "proj.h"
+#include "projects.h"
 
-char const pj_release[]="Rel. 5.0.0, March 1st, 2018";
+#define STR_HELPER(x) #x
+#define STR(x) STR_HELPER(x)
 
-const char *pj_get_release()
+char const pj_release[] =
+    "Rel. "
+    STR(PROJ_VERSION_MAJOR)"."
+    STR(PROJ_VERSION_MINOR)"."
+    STR(PROJ_VERSION_PATCH)", "
+    "April 1st, 2018";
 
-{
+const char *pj_get_release() {
     return pj_release;
 }
diff --git a/src/pj_strtod.c b/src/pj_strtod.c
index 90d0b2e..1cf94c9 100644
--- a/src/pj_strtod.c
+++ b/src/pj_strtod.c
@@ -69,10 +69,10 @@ double pj_atof( const char* nptr )
 
 
 /************************************************************************/
-/*                     pj_replace_point_by_locale_point()               */
+/*                     replace_point_by_locale_point()               */
 /************************************************************************/
 
-static char* pj_replace_point_by_locale_point(const char* pszNumber, char point,
+static char* replace_point_by_locale_point(const char* pszNumber, char point,
                                               char* pszWorkBuffer)
 {
 #if !defined(HAVE_LOCALECONV)
@@ -179,7 +179,7 @@ double pj_strtod( const char *nptr, char **endptr )
     int         nError;
     char        szWorkBuffer[PJ_STRTOD_WORK_BUFFER_SIZE];
 
-    char*       pszNumber = pj_replace_point_by_locale_point(nptr, '.', szWorkBuffer);
+    char*       pszNumber = replace_point_by_locale_point(nptr, '.', szWorkBuffer);
 
     dfValue = strtod( pszNumber, endptr );
     nError = errno;
diff --git a/src/pj_transform.c b/src/pj_transform.c
index fc0a324..22b685b 100644
--- a/src/pj_transform.c
+++ b/src/pj_transform.c
@@ -27,12 +27,24 @@
  * DEALINGS IN THE SOFTWARE.
  *****************************************************************************/
 
-#include <projects.h>
+#include "projects.h"
 #include <string.h>
 #include <math.h>
 #include "geocent.h"
 
-static int pj_adjust_axis( projCtx ctx, const char *axis, int denormalize_flag,
+
+/* Apply transformation to observation - in forward or inverse direction */
+/* Copied from proj.h */
+enum PJ_DIRECTION {
+    PJ_FWD   =  1,   /* Forward    */
+    PJ_IDENT =  0,   /* Do nothing */
+    PJ_INV   = -1    /* Inverse    */
+};
+typedef enum PJ_DIRECTION PJ_DIRECTION;
+
+
+
+static int adjust_axis( projCtx ctx, const char *axis, int denormalize_flag,
                            long point_count, int point_offset,
                            double *x, double *y, double *z );
 
@@ -81,388 +93,470 @@ static const int transient_error[60] = {
     /* 40 to 49 */ 0, 0, 0, 0, 0, 0, 0, 0, 1, 0,
     /* 50 to 59 */ 1, 0, 1, 0, 1, 1, 1, 1, 0, 0 };
 
-/************************************************************************/
-/*                            pj_transform()                            */
-/*                                                                      */
-/*      Currently this function doesn't recognise if two projections    */
-/*      are identical (to short circuit reprojection) because it is     */
-/*      difficult to compare PJ structures (since there are some        */
-/*      projection specific components).                                */
-/************************************************************************/
-
-int pj_transform( PJ *srcdefn, PJ *dstdefn, long point_count, int point_offset,
-                  double *x, double *y, double *z )
-
-{
-    long      i;
 
-    srcdefn->ctx->last_errno = 0;
-    dstdefn->ctx->last_errno = 0;
-
-    if( point_offset == 0 )
-        point_offset = 1;
 
 /* -------------------------------------------------------------------- */
 /*      Transform unusual input coordinate axis orientation to          */
 /*      standard form if needed.                                        */
 /* -------------------------------------------------------------------- */
-    if( strcmp(srcdefn->axis,"enu") != 0 )
-    {
-        int err;
+static int adjust_axes (PJ *P, PJ_DIRECTION dir, long n, int dist, double *x, double *y, double *z) {
+    /* Nothing to do? */
+    if (0==strcmp(P->axis,"enu"))
+        return 0;
+
+    return adjust_axis( P->ctx, P->axis,
+                dir==PJ_FWD ? 1: 0, n, dist, x, y, z );
+}
+
 
-        err = pj_adjust_axis( srcdefn->ctx, srcdefn->axis,
-                              0, point_count, point_offset, x, y, z );
-        if( err != 0 )
-            return err;
+
+/* ----------------------------------------------------------------------- */
+/*    Transform cartesian ("geocentric") source coordinates to lat/long,   */
+/*    if needed                                                            */
+/* ----------------------------------------------------------------------- */
+static int geographic_to_cartesian (PJ *P, PJ_DIRECTION dir, long n, int dist, double *x, double *y, double *z) {
+    int res;
+    long i;
+    double fac = P->to_meter;
+
+    /* Nothing to do? */
+    if (!P->is_geocent)
+        return 0;
+
+    if ( z == NULL ) {
+        pj_ctx_set_errno( pj_get_ctx(P), PJD_ERR_GEOCENTRIC);
+        return PJD_ERR_GEOCENTRIC;
+    }
+
+    if (PJ_FWD==dir) {
+        fac = P->fr_meter;
+        res = pj_geodetic_to_geocentric( P->a_orig, P->es_orig, n, dist, x, y, z );
+        if (res)
+            return res;
+    }
+
+    if (fac != 1.0) {
+        for( i = 0; i < n; i++ ) {
+            if( x[dist*i] != HUGE_VAL ) {
+                x[dist*i] *= fac;
+                y[dist*i] *= fac;
+                z[dist*i] *= fac;
+            }
+        }
     }
 
+    if (PJ_FWD==dir)
+        return 0;
+    return pj_geocentric_to_geodetic(
+        P->a_orig, P->es_orig,
+        n, dist,
+        x, y, z
+    );
+}
+
+
+
+
+
+
+
+
+
+
 /* -------------------------------------------------------------------- */
-/*      Transform geocentric source coordinates to lat/long.            */
+/*      Transform destination points to projection coordinates, if      */
+/*      desired.                                                        */
+/*                                                                      */
+/*      Ought to fold this into projected_to_geographic                 */
 /* -------------------------------------------------------------------- */
-    if( srcdefn->is_geocent )
+static int geographic_to_projected (PJ *P, long n, int dist, double *x, double *y, double *z) {
+    long i;
+
+    /* Nothing to do? */
+    if (P->is_latlong)
+        return 0;
+    if (P->is_geocent)
+        return 0;
+
+    if(P->fwd3d != NULL)
     {
-        int err;
-        if( z == NULL )
+        /* Three dimensions must be defined */
+        if ( z == NULL)
         {
-            pj_ctx_set_errno( pj_get_ctx(srcdefn), PJD_ERR_GEOCENTRIC);
+            pj_ctx_set_errno( pj_get_ctx(P), PJD_ERR_GEOCENTRIC);
             return PJD_ERR_GEOCENTRIC;
         }
 
-        if( srcdefn->to_meter != 1.0 )
+        for( i = 0; i < n; i++ )
         {
-            for( i = 0; i < point_count; i++ )
+            XYZ projected_loc;
+            LPZ geodetic_loc;
+
+            geodetic_loc.u = x[dist*i];
+            geodetic_loc.v = y[dist*i];
+            geodetic_loc.w = z[dist*i];
+
+            if (geodetic_loc.u == HUGE_VAL)
+                continue;
+
+            projected_loc = pj_fwd3d( geodetic_loc, P);
+            if( P->ctx->last_errno != 0 )
             {
-                if( x[point_offset*i] != HUGE_VAL )
+                if( (P->ctx->last_errno != 33 /*EDOM*/
+                        && P->ctx->last_errno != 34 /*ERANGE*/ )
+                    && (P->ctx->last_errno > 0
+                        || P->ctx->last_errno < -44 || n == 1
+                        || transient_error[-P->ctx->last_errno] == 0 ) )
+                    return P->ctx->last_errno;
+                else
                 {
-                    x[point_offset*i] *= srcdefn->to_meter;
-                    y[point_offset*i] *= srcdefn->to_meter;
-                    z[point_offset*i] *= srcdefn->to_meter;
+                    projected_loc.u = HUGE_VAL;
+                    projected_loc.v = HUGE_VAL;
+                    projected_loc.w = HUGE_VAL;
                 }
             }
-        }
 
-        err = pj_geocentric_to_geodetic( srcdefn->a_orig, srcdefn->es_orig,
-                                         point_count, point_offset,
-                                         x, y, z );
-        if( err != 0 )
-            return err;
+            x[dist*i] = projected_loc.u;
+            y[dist*i] = projected_loc.v;
+            z[dist*i] = projected_loc.w;
+        }
+        return 0;
     }
 
-/* -------------------------------------------------------------------- */
-/*      Transform source points to lat/long, if they aren't             */
-/*      already.                                                        */
-/* -------------------------------------------------------------------- */
-    else if( !srcdefn->is_latlong )
+    for( i = 0; i <n; i++ )
     {
+        XY         projected_loc;
+        LP	       geodetic_loc;
 
-        /* Check first if projection is invertible. */
-        if( (srcdefn->inv3d == NULL) && (srcdefn->inv == NULL))
-        {
-            pj_ctx_set_errno( pj_get_ctx(srcdefn), -17 );
-            pj_log( pj_get_ctx(srcdefn), PJ_LOG_ERROR,
-                    "pj_transform(): source projection not invertable" );
-            return -17;
-        }
+        geodetic_loc.u = x[dist*i];
+        geodetic_loc.v = y[dist*i];
+
+        if( geodetic_loc.u == HUGE_VAL )
+            continue;
 
-        /* If invertible - First try inv3d if defined */
-        if (srcdefn->inv3d != NULL)
+        projected_loc = pj_fwd( geodetic_loc, P );
+        if( P->ctx->last_errno != 0 )
         {
-            /* Three dimensions must be defined */
-            if ( z == NULL)
+            if( (P->ctx->last_errno != 33 /*EDOM*/
+                    && P->ctx->last_errno != 34 /*ERANGE*/ )
+                && (P->ctx->last_errno > 0
+                    || P->ctx->last_errno < -44 || n == 1
+                    || transient_error[-P->ctx->last_errno] == 0 ) )
+                return P->ctx->last_errno;
+            else
             {
-                pj_ctx_set_errno( pj_get_ctx(srcdefn), PJD_ERR_GEOCENTRIC);
-                return PJD_ERR_GEOCENTRIC;
+                projected_loc.u = HUGE_VAL;
+                projected_loc.v = HUGE_VAL;
             }
+        }
 
-            for (i=0; i < point_count; i++)
-            {
-                XYZ projected_loc;
-                XYZ geodetic_loc;
+        x[dist*i] = projected_loc.u;
+        y[dist*i] = projected_loc.v;
+    }
+    return 0;
+}
 
-                projected_loc.u = x[point_offset*i];
-                projected_loc.v = y[point_offset*i];
-                projected_loc.w = z[point_offset*i];
 
-                if (projected_loc.u == HUGE_VAL)
-                    continue;
 
-                geodetic_loc = pj_inv3d(projected_loc, srcdefn);
-                if( srcdefn->ctx->last_errno != 0 )
-                {
-                    if( (srcdefn->ctx->last_errno != 33 /*EDOM*/
-                         && srcdefn->ctx->last_errno != 34 /*ERANGE*/ )
-                        && (srcdefn->ctx->last_errno > 0
-                            || srcdefn->ctx->last_errno < -44 || point_count == 1
-                            || transient_error[-srcdefn->ctx->last_errno] == 0 ) )
-                        return srcdefn->ctx->last_errno;
-                    else
-                    {
-                        geodetic_loc.u = HUGE_VAL;
-                        geodetic_loc.v = HUGE_VAL;
-                        geodetic_loc.w = HUGE_VAL;
-                    }
-                }
 
-                x[point_offset*i] = geodetic_loc.u;
-                y[point_offset*i] = geodetic_loc.v;
-                z[point_offset*i] = geodetic_loc.w;
 
-            }
+/* ----------------------------------------------------------------------- */
+/*    Transform projected source coordinates to lat/long, if needed        */
+/* ----------------------------------------------------------------------- */
+static int projected_to_geographic (PJ *P, long n, int dist, double *x, double *y, double *z) {
+    long i;
+
+    /* Nothing to do? */
+    if (P->is_latlong)
+        return 0;
+
+    /* Check first if projection is invertible. */
+    if( (P->inv3d == NULL) && (P->inv == NULL))
+    {
+        pj_ctx_set_errno( pj_get_ctx(P), -17 );
+        pj_log( pj_get_ctx(P), PJ_LOG_ERROR,
+                "pj_transform(): source projection not invertable" );
+        return -17;
+    }
 
+    /* If invertible - First try inv3d if defined */
+    if (P->inv3d != NULL)
+    {
+        /* Three dimensions must be defined */
+        if ( z == NULL)
+        {
+            pj_ctx_set_errno( pj_get_ctx(P), PJD_ERR_GEOCENTRIC);
+            return PJD_ERR_GEOCENTRIC;
         }
-        else
+
+        for (i=0; i < n; i++)
         {
-            /* Fallback to the original PROJ.4 API 2d inversion - inv */
-            for( i = 0; i < point_count; i++ )
-            {
-                XY         projected_loc;
-                LP	       geodetic_loc;
+            XYZ projected_loc;
+            XYZ geodetic_loc;
 
-                projected_loc.u = x[point_offset*i];
-                projected_loc.v = y[point_offset*i];
+            projected_loc.u = x[dist*i];
+            projected_loc.v = y[dist*i];
+            projected_loc.w = z[dist*i];
 
-                if( projected_loc.u == HUGE_VAL )
-                    continue;
+            if (projected_loc.u == HUGE_VAL)
+                continue;
 
-                geodetic_loc = pj_inv( projected_loc, srcdefn );
-                if( srcdefn->ctx->last_errno != 0 )
+            geodetic_loc = pj_inv3d(projected_loc, P);
+            if( P->ctx->last_errno != 0 )
+            {
+                if( (P->ctx->last_errno != 33 /*EDOM*/
+                        && P->ctx->last_errno != 34 /*ERANGE*/ )
+                    && (P->ctx->last_errno > 0
+                        || P->ctx->last_errno < -44 || n == 1
+                        || transient_error[-P->ctx->last_errno] == 0 ) )
+                    return P->ctx->last_errno;
+                else
                 {
-                    if( (srcdefn->ctx->last_errno != 33 /*EDOM*/
-                         && srcdefn->ctx->last_errno != 34 /*ERANGE*/ )
-                        && (srcdefn->ctx->last_errno > 0
-                            || srcdefn->ctx->last_errno < -44 || point_count == 1
-                            || transient_error[-srcdefn->ctx->last_errno] == 0 ) )
-                        return srcdefn->ctx->last_errno;
-                    else
-                    {
-                        geodetic_loc.u = HUGE_VAL;
-                        geodetic_loc.v = HUGE_VAL;
-                    }
+                    geodetic_loc.u = HUGE_VAL;
+                    geodetic_loc.v = HUGE_VAL;
+                    geodetic_loc.w = HUGE_VAL;
                 }
-
-                x[point_offset*i] = geodetic_loc.u;
-                y[point_offset*i] = geodetic_loc.v;
             }
+
+            x[dist*i] = geodetic_loc.u;
+            y[dist*i] = geodetic_loc.v;
+            z[dist*i] = geodetic_loc.w;
+
         }
+        return 0;
     }
 
-/* -------------------------------------------------------------------- */
-/*      But if they are already lat long, adjust for the prime          */
-/*      meridian if there is one in effect.                             */
-/* -------------------------------------------------------------------- */
-    if ((srcdefn->is_geocent || srcdefn->is_latlong) && ( srcdefn->from_greenwich != 0.0 ))
-    {
-        for( i = 0; i < point_count; i++ )
+    /* Fallback to the original PROJ.4 API 2d inversion - inv */
+    for( i = 0; i < n; i++ ) {
+        XY         projected_loc;
+        LP	       geodetic_loc;
+
+        projected_loc.u = x[dist*i];
+        projected_loc.v = y[dist*i];
+
+        if( projected_loc.u == HUGE_VAL )
+            continue;
+
+        geodetic_loc = pj_inv( projected_loc, P );
+        if( P->ctx->last_errno != 0 )
         {
-            if( x[point_offset*i] != HUGE_VAL )
-                x[point_offset*i] += srcdefn->from_greenwich;
+            if( (P->ctx->last_errno != 33 /*EDOM*/
+                    && P->ctx->last_errno != 34 /*ERANGE*/ )
+                && (P->ctx->last_errno > 0
+                    || P->ctx->last_errno < -44 || n == 1
+                    || transient_error[-P->ctx->last_errno] == 0 ) )
+                return P->ctx->last_errno;
+            else
+            {
+                geodetic_loc.u = HUGE_VAL;
+                geodetic_loc.v = HUGE_VAL;
+            }
         }
-    }
 
-/* -------------------------------------------------------------------- */
-/*      Do we need to translate from geoid to ellipsoidal vertical      */
-/*      datum?                                                          */
-/* -------------------------------------------------------------------- */
-    if( srcdefn->has_geoid_vgrids && z != NULL )
-    {
-        if( pj_apply_vgridshift( srcdefn, "sgeoidgrids",
-                                 &(srcdefn->vgridlist_geoid),
-                                 &(srcdefn->vgridlist_geoid_count),
-                                 0, point_count, point_offset, x, y, z ) != 0 )
-            return pj_ctx_get_errno(srcdefn->ctx);
+        x[dist*i] = geodetic_loc.u;
+        y[dist*i] = geodetic_loc.v;
     }
+    return 0;
+}
 
-/* -------------------------------------------------------------------- */
-/*      Convert datums if needed, and possible.                         */
-/* -------------------------------------------------------------------- */
-    if( pj_datum_transform( srcdefn, dstdefn, point_count, point_offset,
-                            x, y, z ) != 0 )
-    {
-        if( srcdefn->ctx->last_errno != 0 )
-            return srcdefn->ctx->last_errno;
-        else
-            return dstdefn->ctx->last_errno;
-    }
 
-/* -------------------------------------------------------------------- */
-/*      Do we need to translate from ellipsoidal to geoid vertical      */
-/*      datum?                                                          */
-/* -------------------------------------------------------------------- */
-    if( dstdefn->has_geoid_vgrids && z != NULL )
-    {
-        if( pj_apply_vgridshift( dstdefn, "sgeoidgrids",
-                                 &(dstdefn->vgridlist_geoid),
-                                 &(dstdefn->vgridlist_geoid_count),
-                                 1, point_count, point_offset, x, y, z ) != 0 )
-            return dstdefn->ctx->last_errno;
-    }
 
 /* -------------------------------------------------------------------- */
-/*      But if they are staying lat long, adjust for the prime          */
-/*      meridian if there is one in effect.                             */
+/*            Adjust for the prime meridian if needed.                  */
 /* -------------------------------------------------------------------- */
-    if ((dstdefn->is_geocent || dstdefn->is_latlong) && ( dstdefn->from_greenwich != 0.0 ))
-    {
-        for( i = 0; i < point_count; i++ )
-        {
-            if( x[point_offset*i] != HUGE_VAL )
-                x[point_offset*i] -= dstdefn->from_greenwich;
-        }
+static int prime_meridian (PJ *P, PJ_DIRECTION dir, long n, int dist, double *x) {
+    int i;
+    double pm = P->from_greenwich;
+
+    /* Nothing to do? */
+    if (pm==0.0)
+        return 0;
+    if (!(P->is_geocent || P->is_latlong))
+        return 0;
+
+    if (dir==PJ_FWD)
+        pm = -pm;
+
+    for (i = 0;  i < n;  i++)
+        if (x[dist*i] != HUGE_VAL)
+            x[dist*i] += pm;
+
+    return 0;
 }
 
+
+
 /* -------------------------------------------------------------------- */
-/*      Transform destination latlong to geocentric if required.        */
+/*            Adjust for vertical scale factor if needed                */
 /* -------------------------------------------------------------------- */
-    if( dstdefn->is_geocent )
-    {
-        if( z == NULL )
-        {
-            pj_ctx_set_errno( dstdefn->ctx, PJD_ERR_GEOCENTRIC );
-            return PJD_ERR_GEOCENTRIC;
-        }
+static int height_unit (PJ *P, PJ_DIRECTION dir, long n, int dist, double *z) {
+    int i;
+    double fac = P->vto_meter;
 
-        pj_geodetic_to_geocentric( dstdefn->a_orig, dstdefn->es_orig,
-                                   point_count, point_offset, x, y, z );
+    if (PJ_FWD==dir)
+        fac = P->vfr_meter;
 
-        if( dstdefn->fr_meter != 1.0 )
-        {
-            for( i = 0; i < point_count; i++ )
-            {
-                if( x[point_offset*i] != HUGE_VAL )
-                {
-                    x[point_offset*i] *= dstdefn->fr_meter;
-                    y[point_offset*i] *= dstdefn->fr_meter;
-                    z[point_offset*i] *= srcdefn->fr_meter;
-                }
-            }
-        }
-    }
+    /* Nothing to do? */
+    if (fac==1.0)
+        return 0;
+    if (0==z)
+        return 0;
 
-/* -------------------------------------------------------------------- */
-/*      Transform destination points to projection coordinates, if      */
-/*      desired.                                                        */
-/* -------------------------------------------------------------------- */
-    else if( !dstdefn->is_latlong )
-    {
+    for (i = 0;  i < n;  i++)
+        if (z[dist*i] != HUGE_VAL )
+            z[dist*i] *= fac;
 
-        if( dstdefn->fwd3d != NULL)
-        {
-            /* Three dimensions must be defined */
-            if ( z == NULL)
-            {
-                pj_ctx_set_errno( pj_get_ctx(dstdefn), PJD_ERR_GEOCENTRIC);
-                return PJD_ERR_GEOCENTRIC;
-            }
+    return 0;
+}
 
-            for( i = 0; i < point_count; i++ )
-            {
-                XYZ projected_loc;
-                LPZ geodetic_loc;
 
-                geodetic_loc.u = x[point_offset*i];
-                geodetic_loc.v = y[point_offset*i];
-                geodetic_loc.w = z[point_offset*i];
 
-                if (geodetic_loc.u == HUGE_VAL)
-                    continue;
+/* -------------------------------------------------------------------- */
+/*           Transform to ellipsoidal heights if needed                 */
+/* -------------------------------------------------------------------- */
+static int geometric_to_orthometric (PJ *P, PJ_DIRECTION dir, long n, int dist, double *x, double *y, double *z) {
+    int err;
+    if (0==P->has_geoid_vgrids)
+        return 0;
+    if (z==0)
+        return PJD_ERR_GEOCENTRIC;
+    err = pj_apply_vgridshift (P, "sgeoidgrids",
+              &(P->vgridlist_geoid),
+              &(P->vgridlist_geoid_count),
+              dir==PJ_FWD ? 1 : 0, n, dist, x, y, z );
+    if (err)
+        return pj_ctx_get_errno(P->ctx);
+    return 0;
+}
 
-                projected_loc = pj_fwd3d( geodetic_loc, dstdefn);
-                if( dstdefn->ctx->last_errno != 0 )
-                {
-                    if( (dstdefn->ctx->last_errno != 33 /*EDOM*/
-                         && dstdefn->ctx->last_errno != 34 /*ERANGE*/ )
-                        && (dstdefn->ctx->last_errno > 0
-                            || dstdefn->ctx->last_errno < -44 || point_count == 1
-                            || transient_error[-dstdefn->ctx->last_errno] == 0 ) )
-                        return dstdefn->ctx->last_errno;
-                    else
-                    {
-                        projected_loc.u = HUGE_VAL;
-                        projected_loc.v = HUGE_VAL;
-                        projected_loc.w = HUGE_VAL;
-                    }
-                }
 
-                x[point_offset*i] = projected_loc.u;
-                y[point_offset*i] = projected_loc.v;
-                z[point_offset*i] = projected_loc.w;
-            }
 
-        }
-        else
-        {
-            for( i = 0; i < point_count; i++ )
-            {
-                XY         projected_loc;
-                LP	       geodetic_loc;
+/* -------------------------------------------------------------------- */
+/*      Convert datums if needed, and possible.                         */
+/* -------------------------------------------------------------------- */
+static int datum_transform (PJ *P, PJ *Q, long n, int dist, double *x, double *y, double *z) {
+    if (0==pj_datum_transform (P, Q, n, dist, x, y, z))
+        return 0;
+    if (P->ctx->last_errno)
+        return P->ctx->last_errno;
+    return Q->ctx->last_errno;
+}
 
-                geodetic_loc.u = x[point_offset*i];
-                geodetic_loc.v = y[point_offset*i];
 
-                if( geodetic_loc.u == HUGE_VAL )
-                    continue;
 
-                projected_loc = pj_fwd( geodetic_loc, dstdefn );
-                if( dstdefn->ctx->last_errno != 0 )
-                {
-                    if( (dstdefn->ctx->last_errno != 33 /*EDOM*/
-                         && dstdefn->ctx->last_errno != 34 /*ERANGE*/ )
-                        && (dstdefn->ctx->last_errno > 0
-                            || dstdefn->ctx->last_errno < -44 || point_count == 1
-                            || transient_error[-dstdefn->ctx->last_errno] == 0 ) )
-                        return dstdefn->ctx->last_errno;
-                    else
-                    {
-                        projected_loc.u = HUGE_VAL;
-                        projected_loc.v = HUGE_VAL;
-                    }
-                }
 
-                x[point_offset*i] = projected_loc.u;
-                y[point_offset*i] = projected_loc.v;
-            }
-        }
-    }
 
 /* -------------------------------------------------------------------- */
 /*      If a wrapping center other than 0 is provided, rewrap around    */
 /*      the suggested center (for latlong coordinate systems only).     */
 /* -------------------------------------------------------------------- */
-    else if( dstdefn->is_latlong && dstdefn->is_long_wrap_set )
-    {
-        for( i = 0; i < point_count; i++ )
-        {
-            double val = x[point_offset*i];
-            if( val == HUGE_VAL )
-                continue;
+static int long_wrap (PJ *P, long n, int dist, double *x) {
+    long i;
 
-            /* Get fast in ] -2 PI, 2 PI [ range */
-            val = fmod(val, M_TWOPI);
-            while( val < dstdefn->long_wrap_center - M_PI )
-                val += M_TWOPI;
-            while( val > dstdefn->long_wrap_center + M_PI )
-                val -= M_TWOPI;
-            x[point_offset*i] = val;
-        }
-    }
+    /* Nothing to do? */
+    if (P->is_geocent)
+        return 0;
+    if (!P->is_long_wrap_set)
+        return 0;
+    if (!P->is_latlong)
+        return 0;
 
-/* -------------------------------------------------------------------- */
-/*      Transform normalized axes into unusual output coordinate axis   */
-/*      orientation if needed.                                          */
-/* -------------------------------------------------------------------- */
-    if( strcmp(dstdefn->axis,"enu") != 0 )
-    {
-        int err;
+    for (i = 0;  i < n;  i++ ) {
+        double val = x[dist*i];
+        if (val == HUGE_VAL)
+            continue;
 
-        err = pj_adjust_axis( dstdefn->ctx, dstdefn->axis,
-                              1, point_count, point_offset, x, y, z );
-        if( err != 0 )
-            return err;
+        /* Get fast in ] -2 PI, 2 PI [ range */
+        val = fmod(val, M_TWOPI);
+        while( val < P->long_wrap_center - M_PI )
+            val += M_TWOPI;
+        while( val > P->long_wrap_center + M_PI )
+            val -= M_TWOPI;
+        x[dist*i] = val;
     }
+    return 0;
+}
+
+
+
+/************************************************************************/
+/*                            pj_transform()                            */
+/*                                                                      */
+/*      Currently this function doesn't recognise if two projections    */
+/*      are identical (to short circuit reprojection) because it is     */
+/*      difficult to compare PJ structures (since there are some        */
+/*      projection specific components).                                */
+/************************************************************************/
+
+int pj_transform(
+    PJ *srcdefn, PJ *dstdefn,
+    long point_count, int point_offset,
+    double *x, double *y, double *z
+){
+    int       err;
+
+    srcdefn->ctx->last_errno = 0;
+    dstdefn->ctx->last_errno = 0;
+
+    if( point_offset == 0 )
+        point_offset = 1;
+
+    /* Bring input to "normal form": longitude, latitude, ellipsoidal height */
+
+    err = adjust_axes (srcdefn, PJ_INV, point_count, point_offset, x, y, z);
+    if (err)
+        return err;
+    err = geographic_to_cartesian (srcdefn, PJ_INV, point_count, point_offset, x, y, z);
+    if (err)
+        return err;
+    err = projected_to_geographic (srcdefn, point_count, point_offset, x, y, z);
+    if (err)
+        return err;
+    err = prime_meridian (srcdefn, PJ_INV, point_count, point_offset, x);
+    if (err)
+        return err;
+    err = height_unit (srcdefn, PJ_INV, point_count, point_offset, z);
+    if (err)
+        return err;
+    err = geometric_to_orthometric (srcdefn, PJ_INV, point_count, point_offset, x, y, z);
+    if (err)
+        return err;
+
+    /* At the center of the process we do the datum shift (if needed) */
+
+    err = datum_transform(srcdefn, dstdefn, point_count, point_offset, x, y, z );
+    if (err)
+        return err;
+
+    /* Now get out on the other side: Bring "normal form" to output form */
+
+    err = geometric_to_orthometric (dstdefn, PJ_FWD, point_count, point_offset, x, y, z);
+    if (err)
+        return err;
+    err = height_unit (dstdefn, PJ_FWD, point_count, point_offset, z);
+    if (err)
+        return err;
+    err = prime_meridian (dstdefn, PJ_FWD, point_count, point_offset, x);
+    if (err)
+        return err;
+    err = geographic_to_cartesian (dstdefn, PJ_FWD, point_count, point_offset, x, y, z);
+    if (err)
+        return err;
+    err = geographic_to_projected (dstdefn, point_count, point_offset, x, y, z);
+    if (err)
+        return err;
+    err = long_wrap (dstdefn, point_count, point_offset, x);
+    if (err)
+        return err;
+    err = adjust_axes (dstdefn, PJ_FWD, point_count, point_offset, x, y, z);
+    if (err)
+        return err;
 
     return 0;
 }
 
+
+
 /************************************************************************/
 /*                     pj_geodetic_to_geocentric()                      */
 /************************************************************************/
@@ -748,32 +842,17 @@ int pj_datum_transform( PJ *srcdefn, PJ *dstdefn,
 /* -------------------------------------------------------------------- */
     if( srcdefn->datum_type == PJD_GRIDSHIFT )
     {
-        const char* srcnadgrids = pj_param(srcdefn->ctx, srcdefn->params,"snadgrids").s;
-
         pj_apply_gridshift_2( srcdefn, 0, point_count, point_offset, x, y, z );
         CHECK_RETURN(srcdefn);
 
-        /* If the gridlist has either "@null" or "null" as its only    */
-        /* grid we don't change the ellipsoid parameters, since the    */
-        /* datum shift to WGS84 was not performed in practice.         */
-        if ( srcnadgrids != NULL &&
-             strcmp("@null", srcnadgrids) && strcmp("null", srcnadgrids) ) {
-            src_a = SRS_WGS84_SEMIMAJOR;
-            src_es = SRS_WGS84_ESQUARED;
-        }
+        src_a = SRS_WGS84_SEMIMAJOR;
+        src_es = SRS_WGS84_ESQUARED;
     }
 
     if( dstdefn->datum_type == PJD_GRIDSHIFT )
     {
-        const char* dstnadgrids = pj_param(dstdefn->ctx, dstdefn->params,"snadgrids").s;
-        /* If the gridlist has either "@null" or "null" as its only    */
-        /* grid we don't change the ellipsoid parameters, since the    */
-        /* datum shift to WGS84 will not be performed.                 */
-        if ( dstnadgrids != NULL &&
-             strcmp("@null", dstnadgrids) && strcmp("null", dstnadgrids) ) {
-            dst_a = SRS_WGS84_SEMIMAJOR;
-            dst_es = SRS_WGS84_ESQUARED;
-          }
+        dst_a = SRS_WGS84_SEMIMAJOR;
+        dst_es = SRS_WGS84_ESQUARED;
     }
 
 /* ==================================================================== */
@@ -835,12 +914,12 @@ int pj_datum_transform( PJ *srcdefn, PJ *dstdefn,
 }
 
 /************************************************************************/
-/*                           pj_adjust_axis()                           */
+/*                           adjust_axis()                           */
 /*                                                                      */
 /*      Normalize or de-normalized the x/y/z axes.  The normal form     */
 /*      is "enu" (easting, northing, up).                               */
 /************************************************************************/
-static int pj_adjust_axis( projCtx ctx,
+static int adjust_axis( projCtx ctx,
                            const char *axis, int denormalize_flag,
                            long point_count, int point_offset,
                            double *x, double *y, double *z )
diff --git a/src/pj_tsfn.c b/src/pj_tsfn.c
index eff20ca..ea3b896 100644
--- a/src/pj_tsfn.c
+++ b/src/pj_tsfn.c
@@ -1,6 +1,6 @@
 /* determine small t */
 #include <math.h>
-#include <projects.h>
+#include "projects.h"
 
 double pj_tsfn(double phi, double sinphi, double e) {
     double denominator;
diff --git a/src/pj_units.c b/src/pj_units.c
index fe4ad45..84b8894 100644
--- a/src/pj_units.c
+++ b/src/pj_units.c
@@ -3,7 +3,7 @@
 #include "proj.h"
 
 #define PJ_UNITS__
-#include <projects.h>
+#include "projects.h"
 
 /* Field 2 that contains the multiplier to convert named units to meters
 ** may be expressed by either a simple floating point constant or a
diff --git a/src/pj_utils.c b/src/pj_utils.c
index 203c637..d203703 100644
--- a/src/pj_utils.c
+++ b/src/pj_utils.c
@@ -28,7 +28,7 @@
 
 #define PJ_LIB__
 
-#include <projects.h>
+#include "projects.h"
 #include <string.h>
 #include <math.h>
 
diff --git a/src/pj_zpoly1.c b/src/pj_zpoly1.c
index 626a1fe..bacb62c 100644
--- a/src/pj_zpoly1.c
+++ b/src/pj_zpoly1.c
@@ -1,5 +1,5 @@
 /* evaluate complex polynomial */
-#include <projects.h>
+#include "projects.h"
 /* note: coefficients are always from C_1 to C_n
 **	i.e. C_0 == (0., 0)
 **	n should always be >= 1 though no checks are made
diff --git a/src/proj.h b/src/proj.h
index 133f141..9a49374 100644
--- a/src/proj.h
+++ b/src/proj.h
@@ -132,7 +132,7 @@ extern "C" {
 /* The version numbers should be updated with every release! **/
 #define PROJ_VERSION_MAJOR 5
 #define PROJ_VERSION_MINOR 0
-#define PROJ_VERSION_PATCH 0
+#define PROJ_VERSION_PATCH 1
 
 extern char const pj_release[]; /* global release id string */
 
@@ -324,7 +324,7 @@ size_t proj_trans_generic (
 PJ_COORD proj_coord (double x, double y, double z, double t);
 
 /* Measure internal consistency - in forward or inverse direction */
-double proj_roundtrip (PJ *P, PJ_DIRECTION direction, int n, PJ_COORD *coo);
+double proj_roundtrip (PJ *P, PJ_DIRECTION direction, int n, PJ_COORD *coord);
 
 /* Geodesic distance between two points with angular 2D coordinates */
 double proj_lp_dist (const PJ *P, PJ_COORD a, PJ_COORD b);
@@ -373,7 +373,7 @@ double proj_torad (double angle_in_degrees);
 double proj_todeg (double angle_in_radians);
 
 /* Geographical to geocentric latitude - another of the "simple, but useful" */
-PJ_COORD proj_geocentric_latitude (const PJ *P, PJ_DIRECTION direction, PJ_COORD coo);
+PJ_COORD proj_geocentric_latitude (const PJ *P, PJ_DIRECTION direction, PJ_COORD coord);
 
 double proj_dmstor(const char *is, char **rs);
 char*  proj_rtodms(char *s, double r, int pos, int neg);
diff --git a/src/proj_4D_api.c b/src/proj_4D_api.c
index fb20978..ef1b791 100644
--- a/src/proj_4D_api.c
+++ b/src/proj_4D_api.c
@@ -28,7 +28,7 @@
  *****************************************************************************/
 #include <stddef.h>
 #include <errno.h>
-#include <proj.h>
+#include "proj.h"
 #include "proj_internal.h"
 #include "projects.h"
 #include "geodesic.h"
@@ -113,7 +113,7 @@ double proj_xyz_dist (PJ_COORD a, PJ_COORD b) {
 
 
 /* Measure numerical deviation after n roundtrips fwd-inv (or inv-fwd) */
-double proj_roundtrip (PJ *P, PJ_DIRECTION direction, int n, PJ_COORD *coo) {
+double proj_roundtrip (PJ *P, PJ_DIRECTION direction, int n, PJ_COORD *coord) {
     int i;
     PJ_COORD t, org;
 
@@ -126,9 +126,9 @@ double proj_roundtrip (PJ *P, PJ_DIRECTION direction, int n, PJ_COORD *coo) {
     }
 
     /* in the first half-step, we generate the output value */
-    org  = *coo;
-    *coo = proj_trans (P, direction, org);
-    t = *coo;
+    org  = *coord;
+    *coord = proj_trans (P, direction, org);
+    t = *coord;
 
     /* now we take n-1 full steps in inverse direction: We are */
     /* out of phase due to the half step already taken */
@@ -148,26 +148,26 @@ double proj_roundtrip (PJ *P, PJ_DIRECTION direction, int n, PJ_COORD *coo) {
 
 
 /**************************************************************************************/
-PJ_COORD proj_trans (PJ *P, PJ_DIRECTION direction, PJ_COORD coo) {
+PJ_COORD proj_trans (PJ *P, PJ_DIRECTION direction, PJ_COORD coord) {
 /***************************************************************************************
-Apply the transformation P to the coordinate coo, preferring the 4D interfaces if
+Apply the transformation P to the coordinate coord, preferring the 4D interfaces if
 available.
 
 See also pj_approx_2D_trans and pj_approx_3D_trans in pj_internal.c, which work
 similarly, but prefers the 2D resp. 3D interfaces if available.
 ***************************************************************************************/
     if (0==P)
-        return coo;
+        return coord;
     if (P->inverted)
         direction = -direction;
 
     switch (direction) {
         case PJ_FWD:
-            return pj_fwd4d (coo, P);
+            return pj_fwd4d (coord, P);
         case PJ_INV:
-            return  pj_inv4d (coo, P);
+            return  pj_inv4d (coord, P);
         case PJ_IDENT:
-            return coo;
+            return coord;
         default:
             break;
     }
@@ -357,7 +357,7 @@ size_t proj_trans_generic (
 
 
 /*************************************************************************************/
-PJ_COORD proj_geocentric_latitude (const PJ *P, PJ_DIRECTION direction, PJ_COORD coo) {
+PJ_COORD proj_geocentric_latitude (const PJ *P, PJ_DIRECTION direction, PJ_COORD coord) {
 /**************************************************************************************
     Convert geographical latitude to geocentric (or the other way round if
     direction = PJ_INV)
@@ -373,13 +373,13 @@ PJ_COORD proj_geocentric_latitude (const PJ *P, PJ_DIRECTION direction, PJ_COORD
     consequently, the input is copied directly to the output.
 **************************************************************************************/
     const double limit = M_HALFPI - 1e-9;
-    PJ_COORD res = coo;
-    if ((coo.lp.phi > limit) || (coo.lp.phi < -limit) || (P->es==0))
+    PJ_COORD res = coord;
+    if ((coord.lp.phi > limit) || (coord.lp.phi < -limit) || (P->es==0))
         return res;
     if (direction==PJ_FWD)
-        res.lp.phi = atan (P->one_es * tan (coo.lp.phi) );
+        res.lp.phi = atan (P->one_es * tan (coord.lp.phi) );
     else
-        res.lp.phi = atan (P->rone_es * tan (coo.lp.phi) );
+        res.lp.phi = atan (P->rone_es * tan (coord.lp.phi) );
 
     return res;
 }
@@ -409,7 +409,7 @@ in cs2cs compatibility mode.
 }
 
 /*************************************************************************************/
-static int pj_cs2cs_emulation_setup (PJ *P) {
+static int cs2cs_emulation_setup (PJ *P) {
 /**************************************************************************************
 If any cs2cs style modifiers are given (axis=..., towgs84=..., ) create the 4D API
 equivalent operations, so the preparation and finalization steps in the pj_inv/pj_fwd
@@ -419,6 +419,7 @@ Returns 1 on success, 0 on failure
 **************************************************************************************/
     PJ *Q;
     paralist *p;
+    int do_cart = 0;
     if (0==P)
         return 0;
 
@@ -481,8 +482,14 @@ Returns 1 on success, 0 on failure
         size_t n = strlen (s);
 
         /* We ignore null helmert shifts (common in auto-translated resource files, e.g. epsg) */
-        if (0==d[0] && 0==d[1] && 0==d[2] && 0==d[3] && 0==d[4] && 0==d[5] && 0==d[6])
+        if (0==d[0] && 0==d[1] && 0==d[2] && 0==d[3] && 0==d[4] && 0==d[5] && 0==d[6]) {
+            /* If the current ellipsoid is not WGS84, then make sure the */
+            /* change in ellipsoid is still done. */
+            if (!(fabs(P->a - 6378137.0) < 1e-8 && fabs(P->f - 1./ 298.257223563) < 1e-15)) {
+                do_cart = 1;
+            }
             break;
+        }
 
         if (n <= 8) /* 8==strlen ("towgs84=") */
             return 0;
@@ -490,7 +497,7 @@ Returns 1 on success, 0 on failure
         def = malloc (100+n);
         if (0==def)
             return 0;
-        sprintf (def, "break_cs2cs_recursion     proj=helmert %s transpose", s);
+        sprintf (def, "break_cs2cs_recursion     proj=helmert exact %s transpose", s);
         Q = proj_create (P->ctx, def);
         pj_inherit_ellipsoid_def (P, Q);
         free (def);
@@ -503,7 +510,7 @@ Returns 1 on success, 0 on failure
 
     /* We also need cartesian/geographical transformations if we are working in */
     /* geocentric/cartesian space or we need to do a Helmert transform.         */
-    if (P->is_geocent || P->helmert) {
+    if (P->is_geocent || P->helmert || do_cart) {
         char def[150];
         sprintf (def, "break_cs2cs_recursion     proj=cart   a=%40.20g  f=%40.20g", P->a, P->f);
         Q = proj_create (P->ctx, def);
@@ -564,7 +571,7 @@ PJ *proj_create (PJ_CONTEXT *ctx, const char *definition) {
     pj_dealloc (args);
 
     /* Support cs2cs-style modifiers */
-    ret = pj_cs2cs_emulation_setup  (P);
+    ret = cs2cs_emulation_setup  (P);
     if (0==ret)
         return proj_destroy (P);
 
diff --git a/src/proj_api.h b/src/proj_api.h
index 5bba588..cc4d611 100644
--- a/src/proj_api.h
+++ b/src/proj_api.h
@@ -33,7 +33,7 @@
   *
   */
  #ifndef PJ_VERSION
- #define PJ_VERSION 500
+ #define PJ_VERSION 501
  #endif
 
 
diff --git a/src/proj_etmerc.c b/src/proj_etmerc.c
index 67da498..ffb1093 100644
--- a/src/proj_etmerc.c
+++ b/src/proj_etmerc.c
@@ -42,7 +42,7 @@
 #define PJ_LIB__
 
 #include <errno.h>
-#include <proj.h>
+#include "proj.h"
 #include "projects.h"
 
 
diff --git a/src/proj_internal.h b/src/proj_internal.h
index 071510c..75893c3 100644
--- a/src/proj_internal.h
+++ b/src/proj_internal.h
@@ -33,7 +33,7 @@
 #endif
 #include <math.h>   /* For M_PI */
 
-#include <proj.h>
+#include "proj.h"
 
 #ifdef PROJECTS_H
 #error proj_internal.h must be included before projects.h
@@ -73,8 +73,6 @@ enum pj_io_units {
 enum pj_io_units pj_left (PJ *P);
 enum pj_io_units pj_right (PJ *P);
 
-PJ_COORD   proj_trans   (PJ *P, PJ_DIRECTION direction, PJ_COORD obs);
-
 PJ_COORD proj_coord_error (void);
 
 void proj_context_errno_set (PJ_CONTEXT *ctx, int err);
@@ -113,7 +111,7 @@ typedef void (*PJ_LOG_FUNCTION)(void *, int, const char *);
 void proj_log_error (PJ *P, const char *fmt, ...);
 void proj_log_debug (PJ *P, const char *fmt, ...);
 void proj_log_trace (PJ *P, const char *fmt, ...);
-void proj_log_func (PJ_CONTEXT *ctx, void *app_data, PJ_LOG_FUNCTION log);
+void proj_log_func (PJ_CONTEXT *ctx, void *app_data, PJ_LOG_FUNCTION logf);
 
 int pj_ellipsoid (PJ *);
 void pj_inherit_ellipsoid_def (const PJ *src, PJ *dst);
diff --git a/src/proj_mdist.c b/src/proj_mdist.c
index 2495789..4ab50ee 100644
--- a/src/proj_mdist.c
+++ b/src/proj_mdist.c
@@ -28,7 +28,7 @@
 ** Precision commensurate with double precision.
 */
 #define PJ_LIB__
-#include <projects.h>
+#include "projects.h"
 #define MAX_ITER 20
 #define TOL 1e-14
 
diff --git a/src/proj_rouss.c b/src/proj_rouss.c
index 5555e3e..bbf6ff0 100644
--- a/src/proj_rouss.c
+++ b/src/proj_rouss.c
@@ -25,7 +25,7 @@
 */
 #define PJ_LIB__
 #include <errno.h>
-#include <proj.h>
+#include "proj.h"
 #include "projects.h"
 
 struct pj_opaque {
diff --git a/src/rtodms.c b/src/rtodms.c
index b6ad972..77d438b 100644
--- a/src/rtodms.c
+++ b/src/rtodms.c
@@ -1,5 +1,5 @@
 /* Convert radian argument to DMS ascii format */
-#include <projects.h>
+#include "projects.h"
 #include <stdio.h>
 #include <string.h>
 /*
diff --git a/src/test228.c b/src/test228.c
index 5795246..fe2c07e 100644
--- a/src/test228.c
+++ b/src/test228.c
@@ -1,4 +1,4 @@
-#include <proj_api.h>
+#include "proj_api.h"
 #include <stdio.h> /* for printf declaration */
 
 
diff --git a/src/vector1.c b/src/vector1.c
index b3023ee..22e1f5d 100644
--- a/src/vector1.c
+++ b/src/vector1.c
@@ -1,6 +1,6 @@
 /* make storage for one and two dimensional matricies */
 #include <stdlib.h>
-#include <projects.h>
+#include "projects.h"
 	void * /* one dimension array */
 vector1(int nvals, int size) { return((void *)pj_malloc(size * nvals)); }
 	void /* free 2D array */
diff --git a/test-driver b/test-driver
index 0218a01..880a2e8 100755
--- a/test-driver
+++ b/test-driver
@@ -1,9 +1,9 @@
 #! /bin/sh
 # test-driver - basic testsuite driver script.
 
-scriptversion=2016-01-11.22; # UTC
+scriptversion=2017-09-16.17; # UTC
 
-# Copyright (C) 2011-2017 Free Software Foundation, Inc.
+# Copyright (C) 2011-2018 Free Software Foundation, Inc.
 #
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -16,7 +16,7 @@ scriptversion=2016-01-11.22; # UTC
 # GNU General Public License for more details.
 #
 # You should have received a copy of the GNU General Public License
-# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+# along with this program.  If not, see <https://www.gnu.org/licenses/>.
 
 # As a special exception to the GNU General Public License, if you
 # distribute this file as part of a program that contains a
diff --git a/test/Makefile.in b/test/Makefile.in
index b6b78d7..cf1fe50 100644
--- a/test/Makefile.in
+++ b/test/Makefile.in
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.15.1 from Makefile.am.
+# Makefile.in generated by automake 1.16 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994-2017 Free Software Foundation, Inc.
+# Copyright (C) 1994-2018 Free Software Foundation, Inc.
 
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -90,6 +90,7 @@ host_triplet = @host@
 subdir = test
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/m4/ax_cflags_warn_all.m4 \
+	$(top_srcdir)/m4/ax_check_compile_flag.m4 \
 	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
 	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
 	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/configure.ac
@@ -134,7 +135,7 @@ am__recursive_targets = \
   $(RECURSIVE_CLEAN_TARGETS) \
   $(am__extra_recursive_targets)
 AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \
-	distdir
+	distdir distdir-am
 am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
 # Read a list of newline-separated strings from the standard input,
 # and print each of them once, without duplicates.  Input order is
@@ -323,8 +324,8 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	  *config.status*) \
 	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
 	  *) \
-	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
-	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \
+	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \
 	esac;
 
 $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
@@ -441,7 +442,10 @@ cscopelist-am: $(am__tagged_files)
 distclean-tags:
 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
 
-distdir: $(DISTFILES)
+distdir: $(BUILT_SOURCES)
+	$(MAKE) $(AM_MAKEFLAGS) distdir-am
+
+distdir-am: $(DISTFILES)
 	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
 	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
 	list='$(DISTFILES)'; \
diff --git a/test/gie/4D-API_cs2cs-style.gie b/test/gie/4D-API_cs2cs-style.gie
index 66da063..8e5fa06 100644
--- a/test/gie/4D-API_cs2cs-style.gie
+++ b/test/gie/4D-API_cs2cs-style.gie
@@ -186,4 +186,59 @@ tolerance 20 cm
 accept    7.438632495 46.951082877
 expect    2600000.0  1200000.0
 -------------------------------------------------------------------------------
+
+-------------------------------------------------------------------------------
+Make sure that transient errors are returned correctly.
+-------------------------------------------------------------------------------
+operation +proj=geos +lon_0=0.00 +lat_0=0.00 +a=6378169.00 +b=6356583.80 +h=35785831.0
+-------------------------------------------------------------------------------
+accept  85.05493299 46.5261074
+expect  failure
+
+accept  85.05493299 46.5261074 0
+expect  failure
+
+accept  85.05493299 46.5261074 0 0
+expect  failure
+
+-------------------------------------------------------------------------------
+Test that Google's Web Mercator works as intended (see #834 for details).
+-------------------------------------------------------------------------------
+operation   proj=pipeline step init=epsg:26915 inv step init=epsg:3857
+-------------------------------------------------------------------------------
+tolerance   20 cm
+accept      487147.594520173    4934316.46263998
+expect      -10370728.80        5552839.74
+
+accept      487147.594520173    4934316.46263998    0
+expect      -10370728.80        5552839.74          0
+-------------------------------------------------------------------------------
+
+-------------------------------------------------------------------------------
+Test that +datum parameters are handled correctly in pipelines.
+See #872 for details.
+-------------------------------------------------------------------------------
+operation   +proj=pipeline
+            +step +proj=longlat +datum=NAD27 +inv
+            +step +proj=longlat +datum=WGS84
+-------------------------------------------------------------------------------
+tolerance   20 cm
+accept      -100 40 0
+expect      -100.0004058367   40.0000058947        0.0000
+-------------------------------------------------------------------------------
+
+-------------------------------------------------------------------------------
+Test that +towgs84=0,0,0 parameter is handled as still implying cart
+transformation
+-------------------------------------------------------------------------------
+operation   +proj=pipeline
+            +step +proj=utm +zone=11 +ellps=clrk66 +towgs84=0,0,0 +inv
+            +step +proj=utm +zone=11 +datum=WGS84
+
+-------------------------------------------------------------------------------
+tolerance   20 cm
+accept      440720 3751320 0
+expect      440719.958709357 3751294.2109841 -4.44340920541435
+-------------------------------------------------------------------------------
+
 </gie>
diff --git a/test/gie/Makefile.in b/test/gie/Makefile.in
index 02240d8..d32558c 100644
--- a/test/gie/Makefile.in
+++ b/test/gie/Makefile.in
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.15.1 from Makefile.am.
+# Makefile.in generated by automake 1.16 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994-2017 Free Software Foundation, Inc.
+# Copyright (C) 1994-2018 Free Software Foundation, Inc.
 
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -90,6 +90,7 @@ host_triplet = @host@
 subdir = test/gie
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/m4/ax_cflags_warn_all.m4 \
+	$(top_srcdir)/m4/ax_check_compile_flag.m4 \
 	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
 	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
 	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/configure.ac
@@ -273,8 +274,8 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	  *config.status*) \
 	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
 	  *) \
-	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
-	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \
+	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \
 	esac;
 
 $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
@@ -298,7 +299,10 @@ ctags CTAGS:
 cscope cscopelist:
 
 
-distdir: $(DISTFILES)
+distdir: $(BUILT_SOURCES)
+	$(MAKE) $(AM_MAKEFLAGS) distdir-am
+
+distdir-am: $(DISTFILES)
 	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
 	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
 	list='$(DISTFILES)'; \
diff --git a/test/gigs/5111.1.gie b/test/gigs/5111.1.gie
index 335e1d6..d146b36 100644
--- a/test/gigs/5111.1.gie
+++ b/test/gigs/5111.1.gie
@@ -21,7 +21,7 @@ tolerance  0.05 m
 accept    100.0876483 77.6534822
 expect    2800000.0 15000000.0
 
-tolerance  0.05 m
+tolerance  0.055 m
 accept    100.0876483 73.1442856
 expect    2800000.0 13000000.0
 
diff --git a/test/gigs/Makefile.in b/test/gigs/Makefile.in
index 0b78710..c8fdd7e 100644
--- a/test/gigs/Makefile.in
+++ b/test/gigs/Makefile.in
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.15.1 from Makefile.am.
+# Makefile.in generated by automake 1.16 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994-2017 Free Software Foundation, Inc.
+# Copyright (C) 1994-2018 Free Software Foundation, Inc.
 
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -90,6 +90,7 @@ host_triplet = @host@
 subdir = test/gigs
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/m4/ax_cflags_warn_all.m4 \
+	$(top_srcdir)/m4/ax_check_compile_flag.m4 \
 	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
 	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
 	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/configure.ac
@@ -282,8 +283,8 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	  *config.status*) \
 	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
 	  *) \
-	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
-	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \
+	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \
 	esac;
 
 $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
@@ -307,7 +308,10 @@ ctags CTAGS:
 cscope cscopelist:
 
 
-distdir: $(DISTFILES)
+distdir: $(BUILT_SOURCES)
+	$(MAKE) $(AM_MAKEFLAGS) distdir-am
+
+distdir-am: $(DISTFILES)
 	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
 	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
 	list='$(DISTFILES)'; \

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-grass/proj.git



More information about the Pkg-grass-devel mailing list