diff --git a/da/ct/obspack_geocarbon.py b/da/ct/obspack_geocarbon.py
index e6d1a9f8f31e209bca4ccfa9c5316ea5fc35b125..54022f09973931cf6eb1203750ae00f2da7aa8db 100755
--- a/da/ct/obspack_geocarbon.py
+++ b/da/ct/obspack_geocarbon.py
@@ -133,7 +133,6 @@ class ObsPackObservations(Observation):
         for idx, val in zip(ids, simulated): 
             if idx in obs_ids:
                 index = obs_ids.index(idx)
-                #print id,val,val.shape
                 self.datalist[index].simulated = val  # in mol/mol
             else:     
                 missing_samples.append(idx)
@@ -291,35 +290,44 @@ class ObsPackObservations(Observation):
             name, error, may_localize, may_reject = SitesWeights[key].split(';')
             name = name.strip().lower()
             error = float(error)
-            may_localize = bool(may_localize)
-            may_reject = bool(may_reject)
+            may_reject = ("TRUE" in may_reject.upper())
+            may_localize = ("TRUE" in may_localize.upper())
             SiteCategories[name] = {'category': name, 'error': error, 'may_localize': may_localize, 'may_reject': may_reject}
-            #print name,SiteCategories[name]
-
 
         SiteInfo = {}
         SiteMove = {}
+        SiteHourly = {}   # option added to include only certain hours of the day (for e.g. PAL) IvdL
         for key, value in SitesWeights.iteritems():
             if 'co2_' in key or 'sf6' in key:  # to be fixed later, do not yet know how to parse valid keys from rc-files yet.... WP
                 sitename, sitecategory = key, value
                 sitename = sitename.strip()
                 sitecategory = sitecategory.split()[0].strip().lower()
                 SiteInfo[sitename] = SiteCategories[sitecategory]
-                #print sitename,SiteInfo[sitename]
             if 'site.move' in key:
                 identifier, latmove, lonmove = value.split(';')
                 SiteMove[identifier.strip()] = (float(latmove), float(lonmove))
+            if 'site.hourly' in key:
+                identifier, hourfrom, hourto = value.split(';')
+                SiteHourly[identifier.strip()] = (int(hourfrom), int(hourto))
 
         for obs in self.datalist:  # loop over all available data points
 
             obs.mdm = 1000.0  # default is very high model-data-mismatch, until explicitly set by script
             obs.flag = 99  # default is do-not-use , until explicitly set by script
+            exclude_hourly = False # default is that hourly values are not included
 
             identifier = obs.code
             species, site, method, lab, datasetnr = identifier.split('_')
 
-            if SiteInfo.has_key(identifier): 
-                if SiteInfo[identifier]['category'] == 'do-not-use':
+            if SiteInfo.has_key(identifier):
+                if SiteHourly.has_key(identifier):
+                    hourf, hourt = SiteHourly[identifier]
+                    if int(obs.xdate.hour) >= hourf and int(obs.xdate.hour) <= hourt:
+                        logging.warning("Observation in hourly dataset INCLUDED, while sampling time %s was between %s:00-%s:00"%(obs.xdate.time(),hourf,hourt))
+                    else:
+                        logging.warning("Observation in hourly dataset EXCLUDED, while sampling time %s was outside %s:00-%s:00"%(obs.xdate.time(),hourf,hourt))
+                        exclude_hourly = True
+                if SiteInfo[identifier]['category'] == 'do-not-use' or exclude_hourly:
                     logging.warning("Observation found (%s, %d), but not used in assimilation !!!" % (identifier, obs.id))
                     obs.mdm = SiteInfo[identifier]['error'] * self.global_R_scaling
                     obs.may_localize = SiteInfo[identifier]['may_localize']
@@ -347,6 +355,7 @@ class ObsPackObservations(Observation):
 
         self.SiteInfo = SiteInfo
         self.SiteMove = SiteMove
+        self.SiteHourly = SiteHourly
 
         logging.debug("Added Model Data Mismatch to all samples ")
 
@@ -503,12 +512,10 @@ if __name__ == "__main__":
 
     logging.root.setLevel(logging.DEBUG)
 
-    DaCycle = CycleControl(args={'rc':'../../dagriddedjet.rc'})
-    DaCycle.Initialize()
+    DaCycle = CycleControl(args={'rc':'../../ctdas-ei-gfed2-bcb-6x4-gridded.rc'})
     DaCycle.ParseTimes()
 
-    DaSystem = CtDaSystem('../rc/carbontracker.rc')
-    DaSystem.Initialize()
+    DaSystem = CtDaSystem('../rc/carbontracker_geocarbon_gridded.rc')
 
     DaCycle.DaSystem = DaSystem
 
@@ -521,7 +528,6 @@ if __name__ == "__main__":
         DaCycle['time.sample.end'] = DaCycle['time.end']
 
         obs.Initialize()
-        obs.Validate()
         obs.add_observations()
         obs.add_model_data_mismatch()