diff -crB cron-3.0pl1/cron.c cron-3.0pl1.jan/cron.c
*** cron-3.0pl1/cron.c	2009-01-30 22:49:57.000000000 +0100
--- cron-3.0pl1.jan/cron.c	2009-01-30 00:11:40.000000000 +0100
***************
*** 340,351 ****
--- 340,364 ----
  		getpid(), minute, hour, dom, month, dow,
  		doWild?" ":"No wildcard",doNonWild?" ":"Wildcard only"))
  
+ 	// Old situation (Paul Vixie) ->
+ 	
  	/* the dom/dow situation is odd.  '* * 1,15 * Sun' will run on the
  	 * first and fifteenth AND every Sunday;  '* * * * Sun' will run *only*
  	 * on Sundays;  '* * 1,15 * *' will run *only* the 1st and 15th.  this
  	 * is why we keep 'e->dow_star' and 'e->dom_star'.  yes, it's bizarre.
  	 * like many bizarre things, it's the standard.
  	 */
+ 	 
+ 	// New situation (Jesus Feliz Fernandez - janzun@rosanegra.org) ->
+ 	
+ 	/* dom and dow works now in a little bit "consistent" form:
+ 	 * '* * 1,15 * Sun' will run on the first and fifteenth *only* if they are Sundays.
+ 	 * '* * 1,15 * *' and '* * * * Sun' will run as usually.
+ 	 * I know it isn't the standard but, i think, there is no sense in being standard
+ 	 * if the standard form reduces your working (features) capacity.
+ 	 * 
+ 	*/
+ 	
  	for (u = db->head;  u != NULL;  u = u->next) {
  		for (e = u->crontab;  e != NULL;  e = e->next) {
  			Debug(DSCH|DEXT, ("user [%s:%d:%d:...] cmd=\"%s\"\n",
***************
*** 354,364 ****
  			if (bit_test(e->minute, minute) &&
  			    bit_test(e->hour, hour) &&
  			    bit_test(e->month, month) &&
! 			    ( ((e->flags & DOM_STAR) || (e->flags & DOW_STAR))
! 			      ? (bit_test(e->dow,dow) && bit_test(e->dom,dom))
! 			      : (bit_test(e->dow,dow) || bit_test(e->dom,dom)))) {
! 				if ((doNonWild && !(e->flags & (MIN_STAR|HR_STAR)))
! 				    || (doWild && (e->flags & (MIN_STAR|HR_STAR))))
  					job_add(e, u);
  			}
  		}
--- 367,374 ----
  			if (bit_test(e->minute, minute) &&
  			    bit_test(e->hour, hour) &&
  			    bit_test(e->month, month) &&
! 			    (bit_test(e->dow,dow) && bit_test(e->dom,dom))) {
! 				if ((doNonWild && !(e->flags & (MIN_STAR|HR_STAR))) || (doWild && (e->flags & (MIN_STAR|HR_STAR))))
  					job_add(e, u);
  			}
  		}
diff -crB cron-3.0pl1/crontab.5 cron-3.0pl1.jan/crontab.5
*** cron-3.0pl1/crontab.5	2009-01-30 22:49:57.000000000 +0100
--- cron-3.0pl1.jan/crontab.5	2009-01-30 00:11:50.000000000 +0100
***************
*** 172,186 ****
  input. There is no way to split a single command line onto multiple
  lines, like the shell's trailing "\\".
  .PP
! Note: The day of a command's execution can be specified by two
! fields \(em day of month, and day of week.  If both fields are
! restricted (i.e., aren't *), the command will be run when
! .I either
! field matches the current time.  For example,
  .br
  ``30 4 1,15 * 5''
  would cause a command to be run at 4:30 am on the 1st and 15th of each
! month, plus every Friday.
  .PP
  Instead of the first five fields, one of eight special strings may appear:
  .IP
--- 172,184 ----
  input. There is no way to split a single command line onto multiple
  lines, like the shell's trailing "\\".
  .PP
! Note (Jesus Feliz Fernandez): The day of a command's execution can be 
! specified by two fields \(em day of month, and day of week.  
! This fields work now in logical AND. For example,
  .br
  ``30 4 1,15 * 5''
  would cause a command to be run at 4:30 am on the 1st and 15th of each
! month, ONLY if the day of week is Friday.
  .PP
  Instead of the first five fields, one of eight special strings may appear:
  .IP
