diff --git a/ChangeLog b/ChangeLog
index 30cc205d1fbcc23e949dd3b712f9d82a0ef643b9..39f4f532563fd12fb7c8cfe1cf7ef31be7674fe9 100755
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,7 @@
 2005-11-07  Kevin P. Fleming  <kpfleming@digium.com>
 
+	* say.c (ast_say_date_with_format_da): say hours properly (issue #5576)
+
 	* manager.c (astman_get_variables): restore old multiple-variable behavior for "Variable" header (issue #5585)
 
 	* many files: don't check for NULL before calling ast_strlen_zero, it can do it itself (issue #5648)
diff --git a/say.c b/say.c
index 2a6c63d1f6d13f8749d349f48e85acfdb739dbd4..720d08649ef4963971428f85df5f35dfe16d0128 100755
--- a/say.c
+++ b/say.c
@@ -3286,12 +3286,14 @@ int ast_say_date_with_format_da(struct ast_channel *chan, time_t time, const cha
 				}
 				break;
 			case 'H':
+				/* 24-Hour, single digit hours preceeded by "oh" (0) */
+				if (tm.tm_hour < 10 && tm.tm_hour > 0) {
+					res = wait_file(chan,ints, "digits/0",lang);
+				}
+				/* FALLTRHU */
 			case 'k':
 				/* 24-Hour */
-				res = wait_file(chan,ints,"digits/oclock",lang);
-				if (!res) {
-					res = ast_say_number(chan, tm.tm_hour, ints, lang, (char *) NULL);	
-				}
+				res = ast_say_number(chan, tm.tm_hour, ints, lang, (char *) NULL);	
 				break;
 			case 'M':
 				/* Minute */