diff --git a/patches/january_2013/holiday_list_patch.py b/patches/january_2013/holiday_list_patch.py
new file mode 100644
index 0000000..e8e8f8c
--- /dev/null
+++ b/patches/january_2013/holiday_list_patch.py
@@ -0,0 +1,41 @@
+import webnotes
+def execute():
+	for name in webnotes.conn.sql("""select name from `tabHoliday List`"""):
+		holiday_list_wrapper = webnotes.model_wrapper("Holiday List", name[0])
+		
+		desc_count = _count([d.description for d in 
+			holiday_list_wrapper.doclist.get({"doctype": "Holiday"})])
+			
+		holiday_list_obj = webnotes.get_obj(doc=holiday_list_wrapper.doc,
+			doclist=holiday_list_wrapper.doclist)
+			
+		save = False
+		
+		for desc in desc_count.keys():
+			if desc in ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday",
+					"Friday", "Saturday"] and desc_count[desc] > 50:
+				holiday_list_obj.doclist = holiday_list_obj.doclist.get(
+					{"description": ["!=", desc]})
+				
+				webnotes.conn.sql("""delete from `tabHoliday`
+					where parent=%s and parenttype='Holiday List' 
+					and `description`=%s""", (holiday_list_obj.doc.name, desc))
+				holiday_list_obj.doc.weekly_off = desc
+				holiday_list_obj.get_weekly_off_dates()
+				save = True
+		
+		if save:
+			holiday_list_wrapper.set_doclist(holiday_list_obj.doclist)
+			holiday_list_wrapper.save()
+				
+def _count(lst):
+	out = {}	
+	for l in lst:
+		out[l] = out.setdefault(l, 0) + 1
+		
+	return out
+		
+		
+		
+		
+		
\ No newline at end of file
diff --git a/patches/patch_list.py b/patches/patch_list.py
index 2dd37ec..f9bb97c 100644
--- a/patches/patch_list.py
+++ b/patches/patch_list.py
@@ -578,4 +578,8 @@
 		'patch_module': 'patches.january_2013',
 		'patch_file': 'remove_support_search_criteria',
 	},
+	{
+		'patch_module': 'patches.january_2013',
+		'patch_file': 'holiday_list_patch',
+	},
 ]
\ No newline at end of file
