diff --git a/bin/dunemodules.inc b/bin/dunemodules.inc
index 9b0cc277c9707569ec94959c355e3e0600b8cfb5..5961b62688456676c1e54ad13fa5d7a4ab3d8250 100644
--- a/bin/dunemodules.inc
+++ b/bin/dunemodules.inc
@@ -415,7 +415,7 @@ check_modname() {
 # 3: revision
 #
 get_sub_version() {
-  echo $1 | awk "{ split(\$0,s,\".\"); match(s[$2],/[[:digit:]]*/); print substr(s[$2],RSTART,RLENGTH) }"
+  echo $1 | awk -F. -v FIELD=$2 '{ print int($FIELD) }'
 }
 
 #
@@ -447,12 +447,6 @@ compare_sub_version() {
   # compare sub version number
   local sub1=`get_sub_version $1 $3`
   local sub2=`get_sub_version $2 $3`
-  if test x$sub1 = x ; then
-    sub1=0
-  fi
-  if test x$sub2 = x ; then
-    sub2=0
-  fi
 
   if test $sub1 -gt $sub2; then
     echo "gt"
diff --git a/m4/dune.m4 b/m4/dune.m4
index 14ace2556143577b2eae5fc425ddd0358c9c1c3d..72e8d54a3a9eb91f32475c1199aad829189696ec 100644
--- a/m4/dune.m4
+++ b/m4/dune.m4
@@ -31,19 +31,19 @@ AC_DEFUN([DUNE_MODULE_ADD_SUMMARY_ENTRY],[
   DUNE_ADD_SUMMARY_MOD_ENTRY(_dune_name,[$result])
 ])
 
+m4_define([_dune_sub_version],"`echo $1 | awk -F. -v FIELD=$2 '{ print int($FIELD) }'`")
+
 AC_DEFUN([DUNE_PARSE_MODULE_VERSION],[
+  AC_REQUIRE([DUNE_SUB_VERSION_FUNCTION])
   m4_pushdef([_dune_name], [$1])
   m4_pushdef([_dune_version], [$2])
   m4_pushdef([_dune_module], [m4_translit(_dune_name, [-], [_])])
   m4_pushdef([_DUNE_MODULE], [m4_toupper(_dune_module)])
 
   _DUNE_MODULE[]_VERSION=_dune_version
-  _DUNE_MODULE[]_VERSION_MAJOR="`echo _dune_version | awk '{ split($[]0,s,"."); match(s[[1]],/[[[[:digit:]]]]*/); print substr(s[[1]],RSTART,RLENGTH) }'`"
-  _DUNE_MODULE[]_VERSION_MINOR="`echo _dune_version | awk '{ split($[]0,s,"."); match(s[[2]],/[[[[:digit:]]]]*/); print substr(s[[2]],RSTART,RLENGTH) }'`"
-  _DUNE_MODULE[]_VERSION_REVISION="`echo _dune_version | awk '{ split($[]0,s,"."); match(s[[3]],/[[[[:digit:]]]]*/); print substr(s[[3]],RSTART,RLENGTH) }'`"
-  if test x$_DUNE_MODULE[]_VERSION_REVISION = x ; then
-    _DUNE_MODULE[]_VERSION_REVISION=0
-  fi
+  _DUNE_MODULE[]_VERSION_MAJOR=_dune_sub_version(_dune_version,1)
+  _DUNE_MODULE[]_VERSION_MINOR=_dune_sub_version(_dune_version,2)
+  _DUNE_MODULE[]_VERSION_REVISION=_dune_sub_version(_dune_version,3)
 
   AC_DEFINE_UNQUOTED(_DUNE_MODULE[]_VERSION, "_dune_version", [Define to the version of] _dune_name)
   AC_DEFINE_UNQUOTED(_DUNE_MODULE[]_VERSION_MAJOR, $_DUNE_MODULE[]_VERSION_MAJOR, [Define to the major version of] _dune_name)