diff --git a/Sunrise.pm b/Sunrise.pm
index 79973b6..0bae9e2 100644
--- a/Sunrise.pm
+++ b/Sunrise.pm
@@ -615,6 +615,7 @@ sub sun_rise
    my $offset = int( shift || 0 );
 
    my $today = DateTime->today->set_time_zone( 'local' );
+   $today->set( hour => 12 );
    $today->add( days => $offset );
 
    my( $sun_rise, undef ) = sunrise( $today->year, $today->mon, $today->mday,
@@ -667,6 +668,7 @@ sub sun_set
    my $offset = int( shift || 0 );
 
    my $today = DateTime->today->set_time_zone( 'local' );
+   $today->set( hour => 12 );
    $today->add( days => $offset );
 
    my( undef, $sun_set ) = sunrise( $today->year, $today->mon, $today->mday,
diff --git a/t/03dst.t b/t/03dst.t
new file mode 100755
index 0000000..13b20af
--- /dev/null
+++ b/t/03dst.t
@@ -0,0 +1,36 @@
+#!/usr/bin/perl -w
+# -*- perl -*-
+
+#
+# Author: Slaven Rezic
+#
+
+use strict;
+use Test::More;
+
+if (!eval q{ require Time::Fake; 1;}) {
+    print "1..0 # skip no Time::Fake module\n";
+    exit;
+}
+
+my @tests = (
+	     [1288545834, 'sun_rise', '07:00'],
+	     [1288545834, 'sun_set',  '16:39'],
+
+	     [1269738800, 'sun_rise', '06:49'],
+	     [1269738800, 'sun_set',  '19:33'],
+	    );
+
+plan tests => scalar @tests;
+
+for my $test (@tests) {
+    my($epoch, $func, $expected) = @$test;
+    my @cmd = ($^X, "-Mblib", "-MTime::Fake=$epoch", "-MAstro::Sunrise", "-e", "print $func(13.5,52.5)");
+    open my $fh, "-|", @cmd or die $!;
+    local $/;
+    my $res = <$fh>;
+    close $fh or die "Failure while running @cmd: $!";
+    is $res, $expected, "Check for $func at $epoch";
+}
+
+__END__