diff --git a/src/post_modules/JSON/json.cmod b/src/post_modules/JSON/json.cmod
index 5aed841270ed4eaaca15b56039af9ef4d742946e..c67cfe1ff7b9b445423effa5e5b3705d636bd454 100644
--- a/src/post_modules/JSON/json.cmod
+++ b/src/post_modules/JSON/json.cmod
@@ -451,13 +451,14 @@ static void json_encode_recur (struct encode_context *ctx, struct svalue *val)
  *! @[escape_string]
  */
 PIKEFUN string encode (int|float|string|array|mapping|object val,
-		       void|int flags, void|function|object|program|string callback)
+                       void|int flags, void|function|object|program|string callback,
+                       void|int base_indent )
   optflags OPT_TRY_OPTIMIZE;
 {
   struct encode_context ctx;
   ONERROR uwp;
   ctx.flags = (flags ? flags->u.integer : 0);
-  ctx.indent = (ctx.flags & HUMAN_READABLE ? 0 : -1);
+  ctx.indent = (ctx.flags & HUMAN_READABLE ? base_indent ? base_indent->u.integer : 0 : -1);
   ctx.callback = callback;
   init_string_builder (&ctx.buf, 0);
   SET_ONERROR (uwp, free_string_builder, &ctx.buf);