diff --git a/pykd/dbgengine.h b/pykd/dbgengine.h
index 37accb8..cb3b5a1 100644
--- a/pykd/dbgengine.h
+++ b/pykd/dbgengine.h
@@ -34,6 +34,7 @@ ULONG64 findModuleBase( ULONG64 offset );
 ULONG64 findModuleBySymbol( const std::string &symbolName );
 std::string getModuleName( ULONG64 baseOffset );
 std::string getModuleImageName( ULONG64 baseOffset ); 
+ULONG getModuleSize( ULONG64 baseOffset );
 std::string getModuleSymbolFileName( ULONG64 baseOffset );
 ULONG getModuleTimeStamp( ULONG64 baseOffset );
 ULONG getModuleCheckSum( ULONG64 baseOffset );
diff --git a/pykd/win/dbgeng.cpp b/pykd/win/dbgeng.cpp
index b7a0ee8..8bd6d66 100644
--- a/pykd/win/dbgeng.cpp
+++ b/pykd/win/dbgeng.cpp
@@ -271,6 +271,22 @@ std::string getModuleImageName( ULONG64 baseOffset )
 
 ///////////////////////////////////////////////////////////////////////////////////
 
+ULONG getModuleSize( ULONG64 baseOffset )
+{
+    PyThread_StateRestore pyThreadRestore( g_dbgEng->pystate );
+
+    HRESULT  hres;
+    DEBUG_MODULE_PARAMETERS     moduleParam = { 0 };
+
+    hres = g_dbgEng->symbols->GetModuleParameters( 1, &baseOffset, 0, &moduleParam );
+    if ( FAILED( hres ) )
+         throw DbgException( "IDebugSymbol::GetModuleParameters  failed" );    
+
+    return moduleParam.Size;
+}
+
+///////////////////////////////////////////////////////////////////////////////////
+
 std::string getModuleSymbolFileName( ULONG64 baseOffset )
 {
     PyThread_StateRestore pyThreadRestore( g_dbgEng->pystate );
diff --git a/test/scripts/moduletest.py b/test/scripts/moduletest.py
index 90b974b..a1be47e 100644
--- a/test/scripts/moduletest.py
+++ b/test/scripts/moduletest.py
@@ -17,6 +17,7 @@ class ModuleTest( unittest.TestCase ):
         
     def testSize( self ):
         self.assertNotEqual( 0, target.module.size() )
+        self.assertTrue( pykd.isValid( target.module.begin() + target.module.size() - 1) )
          
     def testBegin( self ):
         self.assertNotEqual( 0, target.module.begin() )
@@ -25,6 +26,7 @@ class ModuleTest( unittest.TestCase ):
              
     def testEnd( self ):
         self.assertEqual( target.module.size(), target.module.end() - target.module.begin() )
+        self.assertTrue( pykd.isValid( target.module.end() - 1) )
          
     def testPdb( self ):
        self.assertNotEqual( "", target.module.symfile() )
@@ -33,7 +35,7 @@ class ModuleTest( unittest.TestCase ):
        self.assertEqual( target.module.name() + ".exe", target.module.image() )
 
     def testFindModule( self ):
-        self.assertRaises( pykd.BaseException, pykd.module, target.module.begin() - 0x10 )            
+        self.assertRaises( pykd.BaseException, pykd.module, target.module.begin() - 0x10 )
 
         self.assertNotEqual( None, pykd.module( target.module.begin() ) )
         self.assertNotEqual( None, pykd.module( target.module.begin() + 0x10) )