+FUNCTION {format.year}
+{ year empty$
+ { "" }
+ { year n.dashify
+ duplicate$ duplicate$ num.chars #10 =
+ swap$ #5 #2 substring$ "--" = and
+ { duplicate$ duplicate$ #1 #2 substring$ swap$ #7 #2 substring$ =
+ { duplicate$ #1 #6 substring$ swap$ #9 #2 substring$ * }
+ {}
+ if$
+ }
+ {}
+ if$
+ }
+ if$
+}
+
+FUNCTION {format.month}
+{
+ month #-1 #1 substring$ chr.to.int$ duplicate$ #47 > swap$ #58 < and
+ {
+ month #-2 #1 substring$ chr.to.int$ duplicate$ #47 > swap$ #58 < and
+ { #2 'i := }
+ { #1 'i := }
+ if$
+ month #-2 i - #2 substring$ "\ " =
+ { month #0 i - i substring$
+ month #-2 i - #2 substring$
+ month #-3 i - global.max$ i - #2 - substring$
+ * *
+ }
+ {
+ month #-1 i - #1 substring$ duplicate$ " " = swap$ "~" = or
+ { month #0 i - i substring$
+ month #-1 i - #1 substring$
+ month #-2 i - global.max$ i - #1 - substring$
+ * *
+ }
+ { month }
+ if$
+ }
+ if$
+ }
+ { month }
+ if$
+}
+