diff --git a/src/stuff.c b/src/stuff.c
index 68211ec8b5dc7e04052b75315a5737ac145b176a..fc10d0ab16b9d67ec6a0bedf8143b5a06c88daf6 100644
--- a/src/stuff.c
+++ b/src/stuff.c
@@ -5,7 +5,7 @@
 \*/
 
 /*
- * $Id: stuff.c,v 1.6 1998/03/28 15:04:29 grubba Exp $
+ * $Id: stuff.c,v 1.7 1999/02/27 20:35:34 grubba Exp $
  */
 #include "stuff.h"
 
@@ -123,3 +123,33 @@ double my_strtod(char *nptr, char **endptr)
   }
   return tmp;
 }
+
+double strtod_pcharp(PCHARP ptr, PCHARP *endptr)
+{
+  /* NOTE: Cuts at 63 digits */
+
+  char buff[64];
+  int i;
+  double res;
+  char *end_;
+
+  endptr->shift = ptr.shift;
+
+  if (!ptr.shift) {
+    return my_strtod(ptr.ptr, &endptr->ptr);
+  }
+
+  for (i=0; i < 63; i++) {
+    unsigned int c = INDEX_PCHARP(ptr, i);
+    if (!c || (c >= 256)) {
+      break;
+    }
+    buff[i] = c;
+  }
+  buff[i] = 0;
+
+  res = my_strtod(buff, &end_);
+
+  endptr->ptr = ptr.ptr + ((end_ - buff)<<SHIFT);
+  return res;
+}
diff --git a/src/stuff.h b/src/stuff.h
index dda28f0f6349a0c951909817c5f24b38cf8ca9f9..cfde9b6a1e54668dedf896d57cb6619a51cb5019 100644
--- a/src/stuff.h
+++ b/src/stuff.h
@@ -5,7 +5,7 @@
 \*/
 
 /*
- * $Id: stuff.h,v 1.5 1998/03/28 14:59:12 grubba Exp $
+ * $Id: stuff.h,v 1.6 1999/02/27 20:36:14 grubba Exp $
  */
 #ifndef STUFF_H
 #define STUFF_H
@@ -17,6 +17,7 @@ int my_log2(unsigned INT32 x);
 int count_bits(unsigned INT32 x);
 int is_more_than_one_bit(unsigned INT32 x);
 double my_strtod(char *nptr, char **endptr);
+double strtod_pcharp(PCHARP ptr, PCHARP *endptr);
 /* Prototypes end here */
 
 extern INT32 hashprimes[32];