diff --git a/lib/modules/Calendar.pmod/module.pmod b/lib/modules/Calendar.pmod/module.pmod
index b87f1b3041a487a09c6b87e57e108a8d5aace6a2..3dcbc4602254e1f69057a0482b26f197e031b7c5 100644
--- a/lib/modules/Calendar.pmod/module.pmod
+++ b/lib/modules/Calendar.pmod/module.pmod
@@ -4,50 +4,6 @@
 //!   This module implements calendar calculations, and base classes
 //!   for time units. 
 //!
-//!   example program:
-//!   <pre>
-//!	void write_month(object m)
-//!	{
-//!	   object w;
-//!	   object today;
-//!	
-//!	   today=function_object(object_program(m))->Day();
-//!	
-//!	   write(sprintf("    %|28s\n",
-//!			 Simulate.capitalize(m->name()+" ")
-//!                      +m->year()->name()));
-//!	   
-//!	   w=m->day(1)->week();
-//!	
-//!	   write("    ");
-//!	   foreach (Array.map(w->days(),w->day)->week_day_name(),string n)
-//!	      write(sprintf("%3s ",n[0..2]));
-//!	   write("\n");
-//!	
-//!	   do
-//!	   {
-//!	      array a;
-//!	      object d;
-//!	      a=Array.map(Array.map(w->days(),w->day),
-//!			  lambda(object d,object m) 
-//!			  { if (d->month()!=m) return 0; else return d; },m);
-//!	
-//!	      write(sprintf("%3s ",w->name()));
-//!	      foreach (a,d)
-//!		 if (d)
-//!		    if (d!=today) write(sprintf(" %2d ",d->month_day()));
-//!		    else write(sprintf(">%2d<",d->month_day()));
-//!		 else write("    ");
-//!	
-//!	      write("\n");
-//!	      w++;
-//!	   }
-//!	   while (w->day(0)->month()==m);
-//!	}
-//!    </pre>
-//!	call with, for example, 
-//!	<tt>write_month(Calendar.Swedish.Month());</tt>.
-//!
 //! class time_unit
 //!
 //! method array(string) lesser()
@@ -232,3 +188,48 @@ string datetime_short_name(int|void unix_time)
 		 t->year, t->month, t->day,
 		 t->hour, t->minute, t->second);
 }
+
+string print_month(void|object month,void|mapping options)
+{
+   object w;
+   object today;
+   string res="";
+
+   if (!month)  // resolv thing here is to avoid compile-time resolve
+      month=master()->resolv("Calendar")["Gregorian"]["Month"]();
+
+   today=function_object(object_program(month))->Day();
+
+   res=sprintf("    %|28s\n",
+	       String.capitalize(month->name()+" ")
+	       +month->year()->name());
+   
+   w=month->day(1)->week();
+
+   res+="    ";
+   foreach (Array.map(w->days(),w->day)->week_day_name(),string n)
+      res+=sprintf("%3s ",n[0..2]);
+   res+="\n";
+
+   do
+   {
+      array a;
+      object d;
+      a=Array.map(Array.map(w->days(),w->day),
+		  lambda(object d) 
+		  { if (d->month()!=month) return 0; else return d; });
+
+      res+=sprintf("%3s ",w->name());
+      foreach (a,d)
+	 if (d)
+	    if (d!=today) res+=sprintf(" %2d ",d->month_day());
+	    else res+=sprintf(">%2d<",d->month_day());
+	 else res+="    ";
+
+      res+="\n";
+      w++;
+   }
+   while (w->day(0)->month()==month);
+
+   return res;
+}