Index: src/canonmn.hpp
===================================================================
--- src/canonmn.hpp	(revision 2287)
+++ src/canonmn.hpp	(working copy)
@@ -91,6 +91,8 @@
         static std::ostream& printCsLens(std::ostream& os, const Value& value, const ExifData*);
         //! ISO speed used
         static std::ostream& printSi0x0002(std::ostream& os, const Value& value, const ExifData*);
+        //! MeasuredEV
+        static std::ostream& printSi0x0004(std::ostream& os, const Value& value, const ExifData*);
         //! Sequence number
         static std::ostream& printSi0x0009(std::ostream& os, const Value& value, const ExifData*);
         //! AF point used
@@ -101,6 +103,8 @@
         static std::ostream& printSi0x0015(std::ostream& os, const Value& value, const ExifData*);
         //! Shutter speed
         static std::ostream& printSi0x0016(std::ostream& os, const Value& value, const ExifData*);
+        //! MeasuredEV2
+        static std::ostream& printSi0x0017(std::ostream& os, const Value& value, const ExifData*);
         //@}
 
     private:
Index: src/canonmn.cpp
===================================================================
--- src/canonmn.cpp	(revision 2287)
+++ src/canonmn.cpp	(working copy)
@@ -754,7 +754,7 @@
     const TagInfo CanonMakerNote::tagInfoSi_[] = {
         TagInfo(0x0001, "0x0001", "0x0001", N_("Unknown"), canonSiIfdId, makerTags, unsignedShort, printValue),
         TagInfo(0x0002, "ISOSpeed", N_("ISO Speed Used"), N_("ISO speed used"), canonSiIfdId, makerTags, unsignedShort, printSi0x0002),
-        TagInfo(0x0003, "0x0003", "0x0003", N_("Unknown"), canonSiIfdId, makerTags, unsignedShort, printValue),
+        TagInfo(0x0003, "MeasuredEV", N_("Measured EV"), N_("Measured EV"), canonSiIfdId, makerTags, unsignedShort, printSi0x0004),
         TagInfo(0x0004, "TargetAperture", N_("Target Aperture"), N_("Target Aperture"), canonSiIfdId, makerTags, unsignedShort, printSi0x0015),
         TagInfo(0x0005, "TargetShutterSpeed", N_("Target Shutter Speed"), N_("Target shutter speed"), canonSiIfdId, makerTags, unsignedShort, printSi0x0016),
         TagInfo(0x0006, "0x0006", "0x0006", N_("Unknown"), canonSiIfdId, makerTags, unsignedShort, printValue),
@@ -774,7 +774,7 @@
         TagInfo(0x0014, "0x0014", "0x0014", N_("Unknown"), canonSiIfdId, makerTags, unsignedShort, printValue),
         TagInfo(0x0015, "ApertureValue", N_("Aperture Value"), N_("Aperture"), canonSiIfdId, makerTags, unsignedShort, printSi0x0015),
         TagInfo(0x0016, "ShutterSpeedValue", N_("Shutter Speed Value"), N_("Shutter speed"), canonSiIfdId, makerTags, unsignedShort, printSi0x0016),
-        TagInfo(0x0017, "0x0017", "0x0017", N_("Unknown"), canonSiIfdId, makerTags, unsignedShort, printValue),
+        TagInfo(0x0017, "MeasuredEV2", N_("Measured EV 2"), N_("Measured EV 2"), canonSiIfdId, makerTags, unsignedShort, printSi0x0017),
         TagInfo(0x0018, "0x0018", "0x0018", N_("Unknown"), canonSiIfdId, makerTags, unsignedShort, printValue),
         TagInfo(0x0019, "0x0019", "0x0019", N_("Unknown"), canonSiIfdId, makerTags, unsignedShort, printValue),
         TagInfo(0x001a, "0x001a", "0x001a", N_("Unknown"), canonSiIfdId, makerTags, unsignedShort, printValue),
@@ -1154,6 +1154,18 @@
         return os << exp(canonEv(value.toLong()) * log(2.0)) * 100.0 / 32.0;
     }
 
+    std::ostream& CanonMakerNote::printSi0x0004(std::ostream& os,
+                                                const Value& value,
+                                                const ExifData*)
+    {
+        // The offset of '5' seems to be ok for most Canons (see Exiftool)
+        // It might be explained by the fakt, that most Canons have a longest
+        // exposure of 30s which is 5 EV below 1s
+        // see also printSi0x0017
+        return os << std::fixed << std::setprecision(2)
+                << (double)(short)value.toLong() / 32.0 + 5;
+    }
+
     std::ostream& CanonMakerNote::printSi0x0009(std::ostream& os,
                                                 const Value& value,
                                                 const ExifData*)
@@ -1230,6 +1242,14 @@
         return os << " s";
     }
 
+    std::ostream& CanonMakerNote::printSi0x0017(std::ostream& os,
+                                                const Value& value,
+                                                const ExifData*)
+    {
+        return os << std::fixed << std::setprecision(2)
+                << value.toLong() / 8.0 - 6.0;
+    }
+
 // *****************************************************************************
 // free functions
 
