diff -urN tmp/robinhood-2.5.5/src/common/global_config.c robinhood-2.5.5/src/common/global_config.c
--- tmp/robinhood-2.5.5/src/common/global_config.c	2014-11-25 09:02:52.000000000 +0000
+++ robinhood-2.5.5/src/common/global_config.c	2015-11-11 20:36:45.003202000 +0000
@@ -54,6 +54,7 @@
     rh_strncpy(conf->lock_file, "/var/locks/robinhood.lock", RBH_PATH_MAX);
     conf->stay_in_fs = TRUE;
     conf->check_mounted = TRUE;
+    conf->last_access_only_atime = FALSE;
     conf->fs_key = FSKEY_FSNAME;

 #if defined( _LUSTRE ) && defined( _MDS_STAT_SUPPORT )
@@ -77,6 +78,7 @@
     print_line( output, 1, "lock_file     :  \"/var/locks/robinhood.lock\"" );
     print_line( output, 1, "stay_in_fs    :  TRUE" );
     print_line( output, 1, "check_mounted :  TRUE" );
+    print_line( output, 1, "last_access_only_atime :  FALSE" );

 #if defined( _LUSTRE ) && defined( _MDS_STAT_SUPPORT )
     print_line( output, 1, "direct_mds_stat :   FALSE" );
@@ -92,7 +94,7 @@
     global_config_t *conf = ( global_config_t * ) module_config;

     static const char *allowed_params[] = {
-        "fs_path", "fs_type", "lock_file", "stay_in_fs", "check_mounted",
+        "fs_path", "fs_type", "lock_file", "stay_in_fs", "check_mounted", "last_access_only_atime",
         "direct_mds_stat", "fs_key",
 NULL
     };
@@ -163,6 +165,14 @@
     else if ( rc != ENOENT )
         conf->check_mounted = tmpval;

+    /* /!\ last_access_only_atime is a piece of bit field, it should not be passed directly: using tmpval instead */
+    rc = GetBoolParam( general_block, GLOBAL_CONFIG_BLOCK, "last_access_only_atime",
+                       0, &tmpval, NULL, NULL, msg_out );
+    if ( ( rc != 0 ) && ( rc != ENOENT ) )
+        return rc;
+    else if ( rc != ENOENT )
+        conf->last_access_only_atime = tmpval;
+
     /* fs_key param */
     char tmpstr[128];
     rc = GetStringParam( general_block, GLOBAL_CONFIG_BLOCK, "fs_key",
@@ -231,6 +241,13 @@
         global_config.check_mounted = conf->check_mounted;
     }

+    if ( global_config.last_access_only_atime != conf->last_access_only_atime )
+    {
+        DisplayLog( LVL_EVENT, "GlobalConfig", GLOBAL_CONFIG_BLOCK "::last_access_only_atime updated: %s->%s",
+                    bool2str( global_config.last_access_only_atime ), bool2str( conf->last_access_only_atime ) );
+        global_config.last_access_only_atime = conf->last_access_only_atime;
+    }
+
 #if defined( _LUSTRE ) && defined( _MDS_STAT_SUPPORT )
     if ( conf->direct_mds_stat != global_config.direct_mds_stat )
     {
@@ -274,6 +291,10 @@
     fprintf( output, "\n" );
     print_line( output, 1, "# check that the filesystem is mounted" );
     print_line( output, 1, "check_mounted = TRUE ;" );
+    fprintf( output, "\n" );
+    print_line( output, 1, "# Set the last_access time by only the atime variable, and not MAX3(atime,mtime,ctime)" );
+    print_line( output, 1, "# There are no guarantees that all filesystems will correctly store atime" );
+    print_line( output, 1, "last_access_only_atime = FALSE ;" );

 #if defined( _LUSTRE ) && defined( _MDS_STAT_SUPPORT )
     fprintf( output, "\n" );
diff -urN tmp/robinhood-2.5.5/src/common/RobinhoodMisc.c robinhood-2.5.5/src/common/RobinhoodMisc.c
--- tmp/robinhood-2.5.5/src/common/RobinhoodMisc.c	2015-02-26 09:39:47.919878000 +0000
+++ robinhood-2.5.5/src/common/RobinhoodMisc.c	2015-11-11 23:00:24.950352000 +0000
@@ -444,6 +444,7 @@

 void PosixStat2EntryAttr( struct stat *p_inode, attr_set_t * p_attr_set, int size_info )
 {
+
     ATTR_MASK_SET( p_attr_set, owner );
     uid2str( p_inode->st_uid, ATTR( p_attr_set, owner ) );

@@ -464,9 +465,18 @@
 #endif

         /* times are also wrong when they come from the MDT device */
+
+
         ATTR_MASK_SET( p_attr_set, last_access );
-        ATTR( p_attr_set, last_access ) =
-            MAX3( p_inode->st_atime, p_inode->st_mtime, p_inode->st_ctime );
+
+/* Vary the setting of last_access depending on value of global_config.last_access_only_atime */
+	if (global_config.last_access_only_atime) {
+       		ATTR( p_attr_set, last_access ) = p_inode->st_atime;
+	} else {
+       		ATTR( p_attr_set, last_access ) =
+	            MAX3( p_inode->st_atime, p_inode->st_mtime, p_inode->st_ctime );
+	}
+

         ATTR_MASK_SET( p_attr_set, last_mod );
         ATTR( p_attr_set, last_mod ) = p_inode->st_mtime;
diff -urN tmp/robinhood-2.5.5/src/include/global_config.h robinhood-2.5.5/src/include/global_config.h
--- tmp/robinhood-2.5.5/src/include/global_config.h	2014-11-25 09:02:52.000000000 +0000
+++ robinhood-2.5.5/src/include/global_config.h	2015-11-11 20:13:20.815117000 +0000
@@ -49,6 +49,7 @@
     /* behavior flags */
     int            stay_in_fs:1;
     int            check_mounted:1;
+    int		   last_access_only_atime:1;

 #if defined( _LUSTRE ) && defined ( _MDS_STAT_SUPPORT )
     /** Direct stat to MDS on Lustre filesystems */
