diff --git a/metobs/data/__init__.py b/metobs/data/__init__.py
index f7304d1b32cfd6c0c75fd08214f5f4848b2e1905..69101057344fdce1cdd3770dc8ddc6dbc32b361c 100644
--- a/metobs/data/__init__.py
+++ b/metobs/data/__init__.py
@@ -1,4 +1,4 @@
 
-from .time import to_unix_timestamp, hhmm_to_offset
+from .time import to_unix_timestamp, hhmm_to_offset, trunc_datetime
 from .units import *
 from .calc import *
diff --git a/metobs/data/solar_position.py b/metobs/data/solar_position.py
index da8167639c96848aad47319ed73ab0a9d91c379c..5954e470c61e726aa97adc6ba4d7e6d27d055666 100644
--- a/metobs/data/solar_position.py
+++ b/metobs/data/solar_position.py
@@ -68,8 +68,6 @@ https://cvs.ssec.wisc.edu/cgi-bin/cvsweb.cgi/java/tower/SolarPosition.java
 """
 
 __docformat__ = 'restructuredtext en'
-__version__ = '$Revision: 1.6 $'
-# $Source: /cvsroot/TOOLS/dev/metobs/python/data/metobs/data/solar_position.py,v $
 
 from metobs.data import NaN, util
 import math
diff --git a/metobs/data/time.py b/metobs/data/time.py
index a5941134c3b8d496c88c22f47e996528343d6d6d..ba850b596af30940bf2e3cfdba42e52adcb15a4f 100644
--- a/metobs/data/time.py
+++ b/metobs/data/time.py
@@ -1,6 +1,19 @@
-from datetime import timedelta
+from datetime import timedelta, datetime
 from calendar import timegm
 
+def trunc_datetime(dt, interval):
+    """Truncate a datetime to the nearest time on interval with basetime
+    of epoch.
+
+    >>> v = trunc_datetime(datetime(2014, 5, 20, 0, 0, 4), timedelta(seconds=5)
+    >>> assert v == datetime(2014, 5, 20, 0, 0, 0)
+    >>> v = trunc_datetime(datetime(2014, 5, 20, 0, 0, 1), 5)
+    >>> assert v == datetime(2014, 5, 20, 0, 0, 0)
+    """
+    if not isinstance(interval, timedelta):
+        interval = timedelta(seconds=interval)
+    utime = to_unix_timestamp(dt) 
+    return datetime.utcfromtimestamp(utime - utime % interval.total_seconds())
 
 def to_unix_timestamp(dtval):
     """Convert a datetime to a unix timestamp.