diff --git a/NEWS b/NEWS
index c160a4a7..f97ef37a 100644
--- a/NEWS
+++ b/NEWS
@@ -8,6 +8,7 @@ procps-ng-NEXT
   * kill: report error if cannot kill process Debian #733172
   * watch: Add hostname to header
   * library: Find tty quicker Debian #770215
+  * watch,free: use locale-independent float Debian #692113
 
 procps-ng-3.3.11
 ----------------
diff --git a/free.1 b/free.1
index 0cbab5d1..ca669231 100644
--- a/free.1
+++ b/free.1
@@ -2,7 +2,7 @@
 .\"  This page Copyright (C) 1993 Matt Welsh, mdw@sunsite.unc.edu.
 .\"  Long options where added at April 15th, 2011.
 .\"  Freely distributable under the terms of the GPL
-.TH FREE 1 "Jul 2016" "procps-ng" "User Commands"
+.TH FREE 1 "2016-06-03" "procps-ng" "User Commands"
 .SH NAME
 free \- Display amount of free and used memory in the system
 .SH SYNOPSIS
@@ -110,11 +110,10 @@ option.
 \fB\-l\fR, \fB\-\-lohi\fR
 Show detailed low and high memory statistics.
 .TP
-\fB\-s\fR, \fB\-\-seconds\fR \fIseconds\fR
-Continuously display the result delay
-.I seconds
+\fB\-s\fR, \fB\-\-seconds\fR \fIdelay\fR
+Continuously display the result \fIdelay\fR  seconds
 apart.  You may actually specify any floating point number for
-.IR delay ,
+\fIdelay\fR using either . or , for decimal point.
 .BR usleep (3)
 is used for microsecond resolution delay times.
 .TP
diff --git a/free.c b/free.c
index f86ab951..3db0b59e 100644
--- a/free.c
+++ b/free.c
@@ -324,9 +324,7 @@ int main(int argc, char **argv)
 		case 's':
 			flags |= FREE_REPEAT;
 			errno = 0;
-			args.repeat_interval = (1000000 * strtof(optarg, &endptr));
-			if (errno || optarg == endptr || (endptr && *endptr))
-				xerrx(EXIT_FAILURE, _("seconds argument `%s' failed"), optarg);
+            args.repeat_interval = (1000000 * strtod_nol_or_err(optarg, "seconds argument failed"));
 			if (args.repeat_interval < 1)
 				xerrx(EXIT_FAILURE,
 				     _("seconds argument `%s' is not positive number"), optarg);
diff --git a/watch.c b/watch.c
index c87eeb52..c510bed6 100644
--- a/watch.c
+++ b/watch.c
@@ -724,7 +724,7 @@ int main(int argc, char *argv[])
 			flags |= WATCH_EXEC;
 			break;
 		case 'n':
-			interval = strtod_or_err(optarg, _("failed to parse argument"));
+			interval = strtod_nol_or_err(optarg, _("failed to parse argument"));
 			if (interval < 0.1)
 				interval = 0.1;
 			if (interval > UINT_MAX)