+ if (*y < 1582 || (*y == 1582 && (*m < 10 || (*m == 10 && *d < 15))))
+ return y;
+
+ return NULL;
+}
+
+/* Returns the number of days from 14 Oct 1582 to (Y,M,D) in the
+ Gregorian calendar. Returns SYSMIS for dates before 14 Oct
+ 1582. */
+double
+calendar_gregorian_to_offset (int y, int m, int d,
+ const struct fmt_settings *settings,
+ char **errorp)
+{
+ int *bad_value = calendar_gregorian_adjust (&y, &m, &d, settings);
+ if (!bad_value)
+ {
+ if (errorp)
+ *errorp = NULL;
+ return calendar_raw_gregorian_to_offset (y, m, d);
+ }
+ else