Index: /modules/date/date.inc
===================================================================
--- /modules/date/date.inc	(revision 9)
+++ /modules/date/date.inc	(working copy)
@@ -177,7 +177,7 @@
   global $user;
 
   if ($offset) {
-  	return (time() - date("Z")) + offset;
+    return (time() - date("Z")) + offset;
   }
   elseif (variable_get('configurable_timezones', 1) && $user->uid && strlen($user->timezone)) {
     return (time() - date("Z")) + $user->timezone;
@@ -245,7 +245,7 @@
   $old_date = $date;
   $error = array();
   if (trim($value) === 'ERROR') {
-  	$error[] = 'value';
+    $error[] = 'value';
   }
   if (!$error && $format == DATE_UNIX) {
     $date->$type->timestamp = $value;
@@ -781,7 +781,11 @@
       '#weight' => $formats['input']['select']['Y'],
     );
     if ($select_year) {
-      $year = $year > 0 ? $year : date_gmdate('Y', date_gmadj_zone(time()));
+      if ($years_forward == 'now') {
+        $year = date_gmdate('Y', date_gmadj_zone(time()));
+      } else {
+        $year = $year > 0 ? $year : date_gmdate('Y', date_gmadj_zone(time()));
+      }
       $years_array = drupal_map_assoc(range($year - $years_back, $year + $years_forward));
       // array_unshift converts the assoc array to a numeric one, can't use it here
       if (!$required || in_array('year', $opt_fields) || $blank_default) $years_array = array(0 => '') + $years_array;
