diff --git a/Doc/lib/libmath.tex b/Doc/lib/libmath.tex
index f013e23..1dc4365 100644
--- a/Doc/lib/libmath.tex
+++ b/Doc/lib/libmath.tex
@@ -86,8 +86,10 @@
 Return \code{\var{x} * (2**\var{i})}.
 \end{funcdesc}
 
-\begin{funcdesc}{log}{x}
-Return the natural logarithm of \var{x}.
+\begin{funcdesc}{log}{x\optional{, base}}
+Returns the logarithm of \var{x} to the given base.
+If the base is not specified, returns the natural logarithm of \var{x}.
+\versionchanged[\var{base} argument added]{2.3}
 \end{funcdesc}
 
 \begin{funcdesc}{log10}{x}
diff --git a/Lib/test/test_math.py b/Lib/test/test_math.py
index 2d9b55b..8063025 100644
--- a/Lib/test/test_math.py
+++ b/Lib/test/test_math.py
@@ -113,6 +113,7 @@
 testit('log(1/e)', math.log(1/math.e), -1)
 testit('log(1)', math.log(1), 0)
 testit('log(e)', math.log(math.e), 1)
+testit('log(32,2)', math.log(32,2), 5)
 
 print 'log10'
 testit('log10(0.1)', math.log10(0.1), -1)
diff --git a/Misc/NEWS b/Misc/NEWS
index dc04ea6..7eb828f 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -564,6 +564,8 @@
 
 - Added conversion functions math.degrees() and math.radians().
 
+- math.log() now takes an optional argument:  math.log(x[, base]).
+
 - ftplib.retrlines() now tests for callback is None rather than testing
   for False.  Was causing an error when given a callback object which
   was callable but also returned len() as zero.  The change may
diff --git a/Modules/mathmodule.c b/Modules/mathmodule.c
index cbb0000..2572886 100644
--- a/Modules/mathmodule.c
+++ b/Modules/mathmodule.c
@@ -221,18 +221,8 @@
 */
 
 static PyObject*
-loghelper(PyObject* args, double (*func)(double), char *name)
+loghelper(PyObject* args, double (*func)(double), char *format, PyObject *arg)
 {
-	PyObject *arg;
-	char format[16];
-
-	/* See whether this is a long. */
-	format[0] = 'O';
-	format[1] = ':';
-	strcpy(format + 2, name);
-	if (! PyArg_ParseTuple(args, format, &arg))
-		return NULL;
-
 	/* If it is long, do it ourselves. */
 	if (PyLong_Check(arg)) {
 		double x;
@@ -252,23 +242,65 @@
 	}
 
 	/* Else let libm handle it by itself. */
-	format[0] = 'd';
 	return math_1(args, func, format);
 }
 
 static PyObject *
 math_log(PyObject *self, PyObject *args)
 {
-	return loghelper(args, log, "log");
+	PyObject *arg;
+	PyObject *base = NULL;
+	PyObject *num, *den;
+	PyObject *ans;
+	PyObject *newargs;
+
+	if (! PyArg_ParseTuple(args, "O|O:log", &arg, &base))
+		return NULL;
+	if (base == NULL)
+		return loghelper(args, log, "d:log", arg);
+
+	newargs = PyTuple_New(1);
+	if (newargs == NULL)
+		return NULL;
+	Py_INCREF(arg);
+	PyTuple_SET_ITEM(newargs, 0, arg);
+	num = loghelper(newargs, log, "d:log", arg);
+	Py_DECREF(newargs);
+	if (num == NULL)
+		return NULL;
+
+	newargs = PyTuple_New(1);
+	if (newargs == NULL) {
+		Py_DECREF(num);
+		return NULL;
+	}
+	Py_INCREF(base);
+	PyTuple_SET_ITEM(newargs, 0, base);
+	den = loghelper(newargs, log, "d:log", base);
+	Py_DECREF(newargs);
+	if (den == NULL) {
+		Py_DECREF(num);
+		return NULL;
+	}
+
+	ans = PyNumber_Divide(num, den);
+	Py_DECREF(num);
+	Py_DECREF(den);
+	return ans;
 }
 
 PyDoc_STRVAR(math_log_doc,
-"log(x) -> the natural logarithm (base e) of x.");
+"log(x[, base]) -> the logarithm of x to the given base.\n\
+If the base not specified, returns the natural logarithm (base e) of x.");
 
 static PyObject *
 math_log10(PyObject *self, PyObject *args)
 {
-	return loghelper(args, log10, "log10");
+	PyObject *arg;
+
+	if (! PyArg_ParseTuple(args, "O:log10", &arg))
+		return NULL;
+	return loghelper(args, log10, "d:log10", arg);
 }
 
 PyDoc_STRVAR(math_log10_doc,
