- Included some tests where the week start changes the result.
- Changed wkst parameter to default to the result of
  calendar.firstweekday().
- Added examples in the documentation showing cases where
  byweekno may yield results from last year and next year.
diff --git a/dateutil.moin b/dateutil.moin
index 46a68b2..6a5da73 100644
--- a/dateutil.moin
+++ b/dateutil.moin
@@ -314,7 +314,9 @@
     The week start day. Must be one of the {{{MO}}}, {{{TU}}},
     {{{WE}}} constants, or an integer, specifying the first day
     of the week. This will affect recurrences based on weekly
-    periods.
+    periods. The default week start is got from
+    {{{calendar.firstweekday()}}}, and may be modified by
+    {{{calendar.setfirstweekday()}}}.
 
     count::
     How many occurrences will be generated.
@@ -711,6 +713,30 @@
  datetime.datetime(1999, 5, 17, 9, 0)]
 }}}
 
+The week number 1 may be in the last year.
+{{{
+>>> list(rrule(FREQ_WEEKLY, count=3, byweekno=1, byweekday=MO, dtstart=parse("19970902T090000")))
+[datetime.datetime(1997, 12, 29, 9, 0),
+ datetime.datetime(1999, 1, 4, 9, 0),
+ datetime.datetime(2000, 1, 3, 9, 0)]
+}}}
+
+And the week numbers greater than 51 may be in the next year.
+{{{
+>>> list(rrule(FREQ_WEEKLY, count=3, byweekno=52, byweekday=SU, dtstart=parse("19970902T090000")))
+[datetime.datetime(1997, 12, 28, 9, 0),
+ datetime.datetime(1998, 12, 27, 9, 0),
+ datetime.datetime(2000, 1, 2, 9, 0)]
+}}}
+
+Only some years have week number 53:
+{{{
+>>> list(rrule(FREQ_WEEKLY, count=3, byweekno=53, byweekday=MO, dtstart=parse("19970902T090000")))
+[datetime.datetime(1998, 12, 28, 9, 0),
+ datetime.datetime(2004, 12, 27, 9, 0),
+ datetime.datetime(2009, 12, 28, 9, 0)]
+}}}
+
 Every Friday the 13th, 4 occurrences.
 {{{
 >>> list(rrule(FREQ_YEARLY, count=4, byweekday=FR, bymonthday=13, dtstart=parse(
diff --git a/dateutil/rrule.py b/dateutil/rrule.py
index 041b0dd..0570a36 100644
--- a/dateutil/rrule.py
+++ b/dateutil/rrule.py
@@ -68,7 +68,7 @@
 
 class rrule:
     def __init__(self, freq, dtstart=None,
-                 interval=1, wkst=0, count=None, until=None, bysetpos=None,
+                 interval=1, wkst=None, count=None, until=None, bysetpos=None,
                  bymonth=None, bymonthday=None, byyearday=None, byeaster=None,
                  byweekno=None, byweekday=None,
                  byhour=None, byminute=None, bysecond=None,
@@ -88,7 +88,9 @@
         self._interval = interval
         self._count = count
         self._until = until
-        if type(wkst) is int:
+        if wkst is None:
+            self._wkst = calendar.firstweekday()
+        elif type(wkst) is int:
             self._wkst = wkst
         else:
             self._wkst = wkst.weekday
diff --git a/test.py b/test.py
index 4903756..6c5396a 100644
--- a/test.py
+++ b/test.py
@@ -2303,6 +2303,28 @@
                               until=parse("19970901T090000"))),
                          [])
 
+    def testWkStIntervalMO(self):
+        self.assertEqual(list(rrule(FREQ_WEEKLY,
+                              count=3,
+                              interval=2,
+                              byweekday=(TU,SU),
+                              wkst=MO,
+                              dtstart=parse("19970902T090000"))),
+                         [datetime(1997, 9, 2, 9, 0),
+                          datetime(1997, 9, 7, 9, 0),
+                          datetime(1997, 9, 16, 9, 0)])
+
+    def testWkStIntervalSU(self):
+        self.assertEqual(list(rrule(FREQ_WEEKLY,
+                              count=3,
+                              interval=2,
+                              byweekday=(TU,SU),
+                              wkst=SU,
+                              dtstart=parse("19970902T090000"))),
+                         [datetime(1997, 9, 2, 9, 0),
+                          datetime(1997, 9, 14, 9, 0),
+                          datetime(1997, 9, 16, 9, 0)])
+
 class ParserTest(unittest.TestCase):
     def setUp(self):
         self.tzinfos = {"BRST": -10800}