--- src/test/java/org/quartz/AnnualCalendarTest.java	(revision 739)
+++ src/test/java/org/quartz/AnnualCalendarTest.java	(working copy)
@@ -16,6 +16,7 @@
 package org.quartz;
 
 import java.util.Calendar;
+import java.util.Locale;
 import java.util.TimeZone;
 
 import org.quartz.impl.calendar.AnnualCalendar;
@@ -38,7 +39,7 @@
         
         c.setDescription("description");
         
-        Calendar cal = Calendar.getInstance(EST_TIME_ZONE);
+        Calendar cal = Calendar.getInstance(EST_TIME_ZONE, Locale.US);
         cal.clear();
         cal.set(2005, Calendar.JANUARY, 20, 10, 5, 15);
         
--- src/test/java/org/quartz/NthIncludedDayTriggerTest.java	(revision 739)
+++ src/test/java/org/quartz/NthIncludedDayTriggerTest.java	(working copy)
@@ -17,6 +17,7 @@
 
 import java.util.Calendar;
 import java.util.Date;
+import java.util.Locale;
 import java.util.TimeZone;
 
 
@@ -27,6 +28,19 @@
 public class NthIncludedDayTriggerTest extends SerializationTestSupport {
     private static final String[] VERSIONS = new String[] {"1.5.2"};
     
+    private Locale defaultLocale;
+
+    public void setUp() {
+        // These test assume a US locale, where firstDayOfWeek is Sunday.
+        // The default locale is preserved here, and restored after each test.
+        defaultLocale = Locale.getDefault();
+        Locale.setDefault(Locale.US);      
+    }
+
+    public void tearDown() {
+        Locale.setDefault(defaultLocale);      
+    }
+
     public void testGetFireTimeAfter() {
         Calendar startCalendar = Calendar.getInstance();
         startCalendar.set(2005, Calendar.JUNE, 1, 9, 30, 17);
@@ -174,7 +189,47 @@
         }
     }
     
-    
+    public void testSetDay() {
+        // Test initialised in US locale:
+        NthIncludedDayTrigger tUS = new NthIncludedDayTrigger("name", "group");
+        tUS.setIntervalType(org.quartz.NthIncludedDayTrigger.INTERVAL_TYPE_WEEKLY);
+
+        tUS.setDayOfWeek(Calendar.SUNDAY);
+        assertEquals(1, tUS.getN());
+        tUS.setDayOfWeek(Calendar.SATURDAY);
+        assertEquals(7, tUS.getN());
+        
+        // Test setDay where getFirstDayOfWeek != Sunday.
+        NthIncludedDayTrigger tUK = new NthIncludedDayTrigger("name", "group");
+        tUK.setIntervalType(org.quartz.NthIncludedDayTrigger.INTERVAL_TYPE_WEEKLY);
+
+        Locale.setDefault(Locale.UK);
+        tUK.setDayOfWeek(Calendar.MONDAY);
+        assertEquals(1, tUK.getN());
+        tUK.setDayOfWeek(Calendar.SUNDAY);
+        assertEquals(7, tUK.getN());
+    }
+
+    public void testSetDay_nonWeeklyTrigger() {
+        try {
+            NthIncludedDayTrigger t = new NthIncludedDayTrigger("name", "group");
+            t.setIntervalType(org.quartz.NthIncludedDayTrigger.INTERVAL_TYPE_MONTHLY);
+            t.setDayOfWeek(Calendar.SUNDAY);
+            fail("Setting day of week on a monthly calendar should not be allowed");
+        } catch (IllegalStateException ex) {
+            
+        }
+
+        try {
+            NthIncludedDayTrigger t = new NthIncludedDayTrigger("name", "group");
+            t.setIntervalType(org.quartz.NthIncludedDayTrigger.INTERVAL_TYPE_YEARLY);
+            t.setDayOfWeek(Calendar.SUNDAY);
+            fail("Setting day of week on a yearly calendar should not be allowed");
+        } catch (IllegalStateException ex) {
+            
+        }
+    }
+
     /**
      * Get the object to serialize when generating serialized file for future
      * tests, and against which to validate deserialized object.
--- src/java/org/quartz/NthIncludedDayTrigger.java	(revision 739)
+++ src/java/org/quartz/NthIncludedDayTrigger.java	(working copy)
@@ -186,12 +186,21 @@
      * <CODE>NthIncludedDayTrigger</CODE> should fire. If the N<SUP>th</SUP>
      * day of the interval does not exist (i.e. the 32<SUP>nd</SUP> of a 
      * month), the trigger simply will never fire. N may not be less than 1.
-     * 
+     * <p>
+     * For weekly triggers, note that the day of the week corresponding to N
+     * varies according to the locale.  For example, a calendar created with a
+     * US locale uses Sunday as the first day of the week.  In this case,
+     * setting the value of N to 1 will cause the trigger to fire on Sundays.
+     * In contrast, a calendar created in the UK locale uses Monday as the first
+     * day of the week, and setting the value of N to 1 will cause the trigger
+     * to fire on Mondays.
+     *
      * @param  n the day of the interval on which the trigger should fire.
      * @throws java.lang.IllegalArgumentException
      *         the value entered for N was not valid (probably less than or 
      *         equal to zero).
      * @see #getN()
+     * @see #setDayOfWeek(int)
      */
     public void setN(int n) {
         if (n > 0) {
@@ -202,6 +211,44 @@
     }
     
     /**
+     * Sets the day of the week for on which a 
+     * <CODE>NthIncludedDayTrigger</CODE> with a weekly interval should fire.
+     * The <CODE>day</CODE> argument is expected to be one of the
+     * java.util.Calendar day constants, such as <CODE>Calendar.SUNDAY</CODE>.
+     * <p>
+     * This method provides an alternative to {@link #setN(int)} for weekly
+     * triggers. Unlike {@link #setN(int)}, it is not dependent on the current
+     * locale.
+     *
+     * @param  day the day of the week on which the trigger should fire.
+     * @throws java.lang.IllegalArgumentException
+     *         the value entered for day was not one of the java.util.Calendar
+     *         constants that identifies a day.
+     * @throws java.lang.IllegalStateException
+     *         the trigger has not been configured to have a weekly interval.
+     * @see #setN(int)
+     */
+    public void setDayOfWeek(final int day) {
+        if (n < java.util.Calendar.SUNDAY || n > java.util.Calendar.SATURDAY) {
+            throw new IllegalArgumentException(
+                "Day must be between 1 (Calendar.SUNDAY) and 7 (Calendar.SATURDAY)");
+        }
+        if (intervalType != INTERVAL_TYPE_WEEKLY) {
+            throw new IllegalStateException(
+                "Setting the day of week is only appropriate for weekly triggers");
+        }
+
+        final java.util.Calendar defaultCal = java.util.Calendar.getInstance();
+        int nForDay = day - defaultCal.getFirstDayOfWeek() + 1;
+        
+        if (nForDay <= 0) {
+            nForDay += 7;
+        }
+
+        setN(nForDay);
+    }
+
+    /**
      * Returns the day of the interval on which the 
      * <CODE>NthIncludedDayTrigger</CODE> should fire.
      * 
