diff --git a/Doc/api/concrete.tex b/Doc/api/concrete.tex
index e2d3e52..630a726 100644
--- a/Doc/api/concrete.tex
+++ b/Doc/api/concrete.tex
@@ -430,10 +430,9 @@
   \versionadded{2.2}
 \end{cfuncdesc}
 
-\begin{cfuncdesc}{PyObject*}{PyFloat_FromString}{PyObject *str, char **pend}
+\begin{cfuncdesc}{PyObject*}{PyFloat_FromString}{PyObject *str}
   Create a \ctype{PyFloatObject} object based on the string value in
-  \var{str}, or \NULL{} on failure.  The \var{pend} argument is ignored.  It
-  remains only for backward compatibility.
+  \var{str}, or \NULL{} on failure.
 \end{cfuncdesc}
 
 \begin{cfuncdesc}{PyObject*}{PyFloat_FromDouble}{double v}
diff --git a/Doc/api/refcounts.dat b/Doc/api/refcounts.dat
index 019bfd4..54197c8 100644
--- a/Doc/api/refcounts.dat
+++ b/Doc/api/refcounts.dat
@@ -385,7 +385,6 @@
 
 PyFloat_FromString:PyObject*::+1:
 PyFloat_FromString:PyObject*:str:0:
-PyFloat_FromString:char**:pend:0:ignored
 
 PyFrozenSet_New:PyObject*::+1:
 PyFrozenSet_New:PyObject*:iterable:0:
diff --git a/Include/floatobject.h b/Include/floatobject.h
index c3c18af..b535e34 100644
--- a/Include/floatobject.h
+++ b/Include/floatobject.h
@@ -21,10 +21,8 @@
 #define PyFloat_Check(op) PyObject_TypeCheck(op, &PyFloat_Type)
 #define PyFloat_CheckExact(op) ((op)->ob_type == &PyFloat_Type)
 
-/* Return Python float from string PyObject.  Second argument ignored on
-   input, and, if non-NULL, NULL is stored into *junk (this tried to serve a
-   purpose once but can't be made to work as intended). */
-PyAPI_FUNC(PyObject *) PyFloat_FromString(PyObject*, char** junk);
+/* Return Python float from string PyObject. */
+PyAPI_FUNC(PyObject *) PyFloat_FromString(PyObject*);
 
 /* Return Python float from C double. */
 PyAPI_FUNC(PyObject *) PyFloat_FromDouble(double);
diff --git a/Misc/NEWS b/Misc/NEWS
index 7791a45..e7ac139 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -28,6 +28,9 @@
 Core and Builtins
 -----------------
 
+- The long-deprecated argument "pend" of PyFloat_FromString() has been
+  removed.
+
 - The dir() function has been extended to call the __dir__() method on
   its argument, if it exists. If not, it will work like before. This allows
   customizing the output of dir() in the presence of a __getattr__().
diff --git a/Objects/abstract.c b/Objects/abstract.c
index a301287..5a34b96 100644
--- a/Objects/abstract.c
+++ b/Objects/abstract.c
@@ -968,7 +968,7 @@
 		PyFloatObject *po = (PyFloatObject *)o;
 		return PyFloat_FromDouble(po->ob_fval);
 	}
-	return PyFloat_FromString(o, NULL);
+	return PyFloat_FromString(o);
 }
 
 /* Operations on sequences */
diff --git a/Objects/floatobject.c b/Objects/floatobject.c
index 514dd39..9e6db54 100644
--- a/Objects/floatobject.c
+++ b/Objects/floatobject.c
@@ -62,24 +62,8 @@
 	return (PyObject *) op;
 }
 
-/**************************************************************************
-RED_FLAG 22-Sep-2000 tim
-PyFloat_FromString's pend argument is braindead.  Prior to this RED_FLAG,
-
-1.  If v was a regular string, *pend was set to point to its terminating
-    null byte.  That's useless (the caller can find that without any
-    help from this function!).
-
-2.  If v was a Unicode string, or an object convertible to a character
-    buffer, *pend was set to point into stack trash (the auto temp
-    vector holding the character buffer).  That was downright dangerous.
-
-Since we can't change the interface of a public API function, pend is
-still supported but now *officially* useless:  if pend is not NULL,
-*pend is set to NULL.
-**************************************************************************/
 PyObject *
-PyFloat_FromString(PyObject *v, char **pend)
+PyFloat_FromString(PyObject *v)
 {
 	const char *s, *last, *end;
 	double x;
@@ -89,8 +73,6 @@
 #endif
 	Py_ssize_t len;
 
-	if (pend)
-		*pend = NULL;
 	if (PyString_Check(v)) {
 		s = PyString_AS_STRING(v);
 		len = PyString_GET_SIZE(v);
@@ -852,7 +834,7 @@
 	if (!PyArg_ParseTupleAndKeywords(args, kwds, "|O:float", kwlist, &x))
 		return NULL;
 	if (PyString_Check(x))
-		return PyFloat_FromString(x, NULL);
+		return PyFloat_FromString(x);
 	return PyNumber_Float(x);
 }
 
